JavaのExceptionについてです。

http://www.javaworld.jp/technology_and_programming/-/10249-1.html

なかなか勉強になりますね。


本当の例外にだけ例外を使う

わかってはいるんですが、ついつい条件判定に例外機構を使用してしまいます。

(1)処理コストが高くなる
(2)コードの可読性が悪くなる

というのが、例外機構を多用することのデメリット、ということです。


そのアプリケーション専用の例外クラスを使う

これは良く使う手ですね。

私が今作っているシステムでは、

設定ファイルが読み込めなかったり、データベースなど外部システムとの接続が確立できなかったりと、

システムとして続行不可能な例外が発生したときは、独自のRuntimeExceptionをthrowするように

プログラムを書いています。


開発規約として、プログラマーにソース中への記述をお願いしたり、

フレームワークにSeasar を使っているので、

Exceptionハンドリング用のInterceptor クラスを用意して対象クラスにAspectしたりして組み込んでいます。


■例外処理を一括して行う

これも、良く使う手ですね。

ExceptionHandlerか。大体みんな同じような名前付けますね(笑)


私は今はStrutsベースのWebアプリ開発がほとんどなので、

すべてのページで共通に使用するActionクラス(ex.BaseAction)にエラーハンドリングを集約させています。

Tomcat(Struts)に対して例外をthrowすると画面にStackTraceが出てしまい、

ユーザ向けサービスとしてはありえない姿になるので、、、、

すべてのExceptionはBaseActionでハンドリングします。


個々の画面単位で制御すべきExeptionについてはBaseActionを継承した各Actionでハンドリングし、

RuntimeException系の例外は、BaseActionに処理を委譲するためにthrowします。

BaseActionに例外が投げられたときは、内容にしたがって振り分けをして、

共通のエラー画面を表示させる、という感じですね。