Ruby:
Обработка ошибок
Как:
Ruby использует begin, rescue, ensure и end для обработки ошибок. Вы оборачиваете рискованный код в begin и end. Если происходит ошибка, в дело вступает rescue.
begin
# Сюда идет рискованный код.
puts 10 / 0
rescue ZeroDivisionError => e
puts "Ой! Этого делать нельзя: #{e.message}"
ensure
puts "Это всегда выполняется, была ошибка или нет."
endПример вывода:
Ой! Этого делать нельзя: деление на 0
Это всегда выполняется, была ошибка или нет.Погружение
Исторически, обработка ошибок в языках программирования значительно эволюционировала, при этом у ранних языков часто были грубые или несуществующие механизмы. Обработка исключений в Ruby вдохновлена языками вроде Python и Smalltalk.
Альтернативы begin-rescue в Ruby включают использование rescue в определениях методов или применение throw и catch для нестандартного управления потоком, хотя они не используются для типичной обработки ошибок.
Одна интересная деталь: исключения Ruby являются объектами (экземплярами класса Exception и его потомков), так что вы можете определять собственные классы ошибок и делать больше, чем просто регистрировать ошибки — вы можете переносить богатое состояние по программе для более надежной обработки ошибок.
См. также
- Документация Ruby по исключениям и обработке ошибок: ruby-doc.org
- Подробное руководство по лучшим практикам обработки ошибок в Ruby: thoughtbot.com