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