Ruby:
エラー処理

方法:

Rubyではbeginrescueensure、およびendを用いてエラーを処理します。リスクのあるコードをbeginendで囲みます。エラーが発生した場合、rescueが機能します。

begin
  # リスクのあるコードをここに書く。
  puts 10 / 0
rescue ZeroDivisionError => e
  puts "Oops! それはできません: #{e.message}"
ensure
  puts "これは常に実行されます、エラーがあるかないかに関わらず。"
end

サンプル出力:

Oops! それはできません: 0で除算しました
これは常に実行されます、エラーがあるかないかに関わらず。

詳細解説

歴史的に、プログラミング言語におけるエラー処理は大きく進化し、初期の言語には粗末であったり存在しないメカニズムもありました。Rubyの例外処理は、PythonやSmalltalkのような言語によって刺激を受けています。

Rubyにおけるbegin-rescueの代替法としては、メソッド定義内でrescueを使うか、標準的なエラー処理には使われないが、非標準のフロー制御のためにthrowcatchを使う方法があります。

興味深い詳細の一つに、Rubyの例外はオブジェクト(Exceptionクラスおよびその子孫のインスタンス)であることがあります。従って、カスタムエラークラスを定義し、単にエラーをログに記録する以上のことを行うことができます。これにより、より堅牢なエラー処理のためにプログラム内の豊かな状態を運ぶことができます。

関連情報

  • Rubyの例外とエラー処理に関するドキュメント: ruby-doc.org
  • Rubyエラー処理に関するベストプラクティスの詳細なガイド: thoughtbot.com