エラー画面、エラー処理
エラー画面、エラー処理
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へのエラー通知や、エラーログの出力なども行うと
エラー検知の役にも立つと思います。