そもそもエラーハンドリングってどうするのが一般的なのだろう。

そもそも、JavaServletの場合、エラーハンドリングってどうするのが一般的なのだろう。


ServletでWebフレームワーク*1作るときいつも悩むのが、以下のケース。

  • JSP呼び出し中の例外のハンドリング
  • JSP呼出し後の例外のハンドリング

とりあえず、JSP呼出し中の例外ハンドリングに関しては、errorPage属性を使えばよさそう。
けど、サイズの大きい画面をJSPで作ってるときに、レスポンスが途中でflushしちゃっても、エラーページは表示されるのだろうか?


レスポンスがすぐにflushされないように設定するとかはできるけど、それは根本的な解決ではないような。


あと、errorPageに指定する画面てJSP?それともHTML?
もし、JSPにしたときは、さらにそのJSPでエラーが起きたらどうする?


JSP呼出し後の例外のハンドリングに関しては、っーか、『そもそもJSP呼出し後に例外が発生するようなことするなよ』ってことか?


でも、どうしても、JSP呼出し後に例外が発生するような処理をしなきゃならない場合、
レスポンスは既にコミットしてたりするから、エラーページを呼ぼうとするとIllegalStateExceptionが起きたりする。


いろいろめんどくさいので、現状、とりあえずcatchして、ログをはいて、ServletExceptionに包んで、さらに上にポイするで落ち着いている。
あとは、web.xmlのerror-pageが表示されればいいでしょう。と。


いろいろ書いたけど、細かいケースまで動かして検証したことがないから、頭の中がまとまらなくなってきた。
Strutsとかはこの辺りをどう実装しているのだろう?

*1:簡単なもの