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