Javaでプログラミングしていると、どこでどの例外をキャッチすべきか悩むことが多い。特にチェック例外はどこかにキャッチ処理を書かないとコンパイルが通らないので、その数が増えるとコードがキャッチ処理で埋め尽くされて煩雑になってしまう。
この悩みに対しては、最近はフレームワークなどで用いられている以下の設計が良いと思っている。
- チェック例外をキャッチしたら、専用の非チェック例外に包んで(例外翻訳して)、上位に投げる。
- 上位のある個所で、纏めて専用の非チェック例外をキャッチして処理する。もちろん、個別に対処すべき例外があるなら、それは個別の catch 節を設けて対応する。
- チェック例外が発生する箇所で対処できる&すべきであるなら、上記はせずにその場でキャッチして対処する。
この方法なら、コードが大量の throws 節や catch節に覆われることもなく、例外処理が纏まるのでコードも見やすくなるはず。