エラー画面、エラー処理

INDEX PAGE

エラー画面、エラー処理


Webアプリ上でエラーが発生した場合の処理方法ですが
例えばJsp/Servletの場合には、エラーを呼び出し元にスローしていき
最終的に一番呼び出しもとのプログラムで例外をキャッチし
エラー画面にリダイレクトするという流れとなると思います。

Railsの場合には、基本的にそんな面倒なことはしなくても
ApplicationControllerの中で下記のように書くだけでエラーページが実装されます。

def rescue_action( excptn )
 redirect_to :action => 'error', :controller => '/error'
end

Rubyでは、基本的に例外やエラーは上に上がっていくので
Javaのようにthrowを書かなくても
処理されなかった例外は全てこの「rescue_action」で拾ってくれます。


そして、レスキューアクションの中でエラー画面にリダイレクトすれば
エラー画面が完成しました。


「rescue_action」では、引数としてエラークラスを拾うので
このオブジェクトの方を判定して、エラー処理を行うことも可能です。

def rescue_action( excptn )
 case excptn
  when StandardError
   puts "想定内のエラー"
  else
   puts "想定外のエラー"
 end
 
 redirect_to :action => 'error', :controller => '/error'
end


実際にはこの箇所で
Syslogへのエラー通知や、エラーログの出力なども行うと
エラー検知の役にも立つと思います。


INDEX PAGE