>

2010年1月30日土曜日

MyExceptionクラスを作成する必要があるケース

Exceptionを継承したMyExceptionクラスを自分で作る場合は多分次のときだと思う。
  • 自分のプログラムでExceptionに独自の機能を持たせたいとき。どのような機能を持たせるべきかはそのプログラムで採用する例外処理の規則によって異なる。例えばフィールドにログレベルを持たせたRuntimeException継承クラスを作成して全ての例外はベースとなるクラスでログに出力するとか。検査例外(例えばSQLExceptionとか)は全てMyExceptionのコンストラクタに食わせて、同時にメッセージとログレベルを設定してやるとかにしておけば複数のプログラマで開発しているときでも比較的全員に例外処理のルールを周知しやすい。
  • catch節で発生した例外の種別によって条件分岐をさせたいとき。発生した例外の種別によって後処理を切り替えたいときで、Javaで用意されているException(NumberFormatExceptionとか)で意味合い的にちょうどいいのがなかったときも適切な概念を持つMyExceptionクラスを自分で作っても良いかもしれない。ただし、プログラム的に正常系で単にif文とかの代替として例外種別による切り替えをするのはよくないとEffective Javaに書いてあった気がする。あくまで例外系での後処理の切り替えに使用するべきだと思う。例えばログイン時にユーザIDとパスワードの組み合わせが間違っていたのか個人情報を管理しているDBへのアクセスが出来なかったのかを分岐させて適切な表示をユーザに提示するときとかは例外種別による切り替えが適切な状況だと思う。

0 件のコメント: