おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Rubyのエラー関連メソッド

Rubyのエラー関連をちょっと調べてみたのでメモ。

raiseメソッド

引数の数によって挙動が少し違う。

raise
直前の例外の再発生。直前の例外がない場合はRuntimeError
raise message
messageをメッセージとするRuntimeErrorを発生
raise error_type, message
messageをメッセージとするerror_typeのエラーを発生
raise error_type, message, traceback
messageをメッセージとするerror_typeのエラーを発生。tracebackは例外が発生した場所を指定する引数らしい。

エラー時に使えるRuby組み込み変数

$@
エラー位置
$!
エラーオブジェクト

begin関連

定義はだいたいこんな感じ。

begin
  [rescue [error_type, ..] [ => evar]]
  [else 式]
  [ensure 式]
end
  • error_typeが省略された時はStandardErrorのサブクラスのエラーを全て補足
  • rescue節は複数書く事が出来る
  • everに例外オブジェクトが入る(中身は$!と同じ)
  • else節があれば、例外が起こらなかったときに式が評価される
  • ensure節があれば、begin式終了前に必ず式が評価される

rescue修飾子

この書き方は知らなかった。この書き方だと例外クラスの指定は出来ない。

open("nonexistent file") rescue STDERR.puts "Warning: #$!"

参考

制御構造 - Rubyリファレンスマニュアル

初めてのRuby
初めてのRubyYugui

オライリージャパン 2008-06-26
売り上げランキング : 2106

おすすめ平均 star
star要点がコンパクトにまとまっています。(中級者以上向け)

Amazonで詳しく見る
by G-Tools