例外処理の分担について

以前の日記「Javaの例外処理について頭を整理する - oknknicの日記」の続き。
例外処理を、どこで、どれだけするか、について。

どこで

役割分担し、同じ例外処理を複数箇所でしないことがポイントになる。
FWが最終的なトランザクション制御やログ出力をしてくれるなら、例えば下記のように。

  • データベースアクセス関係の例外処理:DAO内でSQLExceptionを非検査例外でラップして投げ上げる。DAOの呼び出し元のロジックは何もしない。

どれだけ

その中で呼び出している処理からthrowされる可能性のある例外で、その内部で例外処理がなされていないものを処理する。
呼び出している処理がthrowする例外達の一覧は、5,6階層コードを追うことで得る。