Ruby:
エラー処理
方法:
Rubyではbegin
、rescue
、ensure
、およびend
を用いてエラーを処理します。リスクのあるコードをbegin
とend
で囲みます。エラーが発生した場合、rescue
が機能します。
begin
# リスクのあるコードをここに書く。
puts 10 / 0
rescue ZeroDivisionError => e
puts "Oops! それはできません: #{e.message}"
ensure
puts "これは常に実行されます、エラーがあるかないかに関わらず。"
end
サンプル出力:
Oops! それはできません: 0で除算しました
これは常に実行されます、エラーがあるかないかに関わらず。
詳細解説
歴史的に、プログラミング言語におけるエラー処理は大きく進化し、初期の言語には粗末であったり存在しないメカニズムもありました。Rubyの例外処理は、PythonやSmalltalkのような言語によって刺激を受けています。
Rubyにおけるbegin-rescue
の代替法としては、メソッド定義内でrescue
を使うか、標準的なエラー処理には使われないが、非標準のフロー制御のためにthrow
とcatch
を使う方法があります。
興味深い詳細の一つに、Rubyの例外はオブジェクト(Exception
クラスおよびその子孫のインスタンス)であることがあります。従って、カスタムエラークラスを定義し、単にエラーをログに記録する以上のことを行うことができます。これにより、より堅牢なエラー処理のためにプログラム内の豊かな状態を運ぶことができます。
関連情報
- Rubyの例外とエラー処理に関するドキュメント: ruby-doc.org
- Rubyエラー処理に関するベストプラクティスの詳細なガイド: thoughtbot.com