2010年06月22日

Ruby on Rails 例外処理 begin

例外処理とは?


なにかエラーが発生した場合の処理です。
以前軽く書きましたね。

環境


Rails1.2.6
app/controllers/hoge_controller.rb

begin


$ vi hoge_controller.rb
def hoge
 begin
  例外が起きそうな通常処理
 rescue
  例外が起きた場合の処理
 else
  例外が発生しなかった場合の処理
 ensure
  例外が発生してもしなくても行う処理
 end
end

# 基本上記のような感じですね。
def hoge
 begin
  raise "例外発生"
 rescue => e
  logger.error e.class.name
  logger.error e.message
 end
end
=> RuntimeError
例外発生

2つめの例では例外が起きたオブジェクトのクラス名とメッセージを表示しています。
backtraceで発生した場所も出す事が可能です。

rescueの後が=> eですが、これは、
rescue StandardError => e というのが省略された形です。
省略された場合StandardErrorが呼ばれますので、
StandardErrorのサブクラスでないエラーをキャッチしたい場合は、
必ず書かなくては行けません。

以前とたいして書いた事変わらないかもですが、少し詳しく書いてみました。
posted by RicK at 15:47| Comment(0) | TrackBack(0) | 日記
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/39096328

この記事へのトラックバック