例外処理が分からない、理解したい
例外処理がよく分からないので取り組まなければならない、というメモ。
何が難しいかというと、検討すべき問題が複数ある上に、それらを実現する言語機能や実装方法にさまざまな種類があり、どれがよいと一概にいえない点です。
- エラーメッセージをどこに出力するか
- ユーザのためのエラーメッセージか
- 開発者のためのエラーログか
- エラーメッセージをどのように管理するか
- クラスやenumで持つのか
- 設定ファイルで持つのか
- パラメタのバインドをどうするのか
- 各例外の後処理をどう定義するか
- 標準例外とユーザ定義例外をどのように設計するか
- 粒度
- 階層関係
- エラーの数や種類が増えても対応しやすい設計とはどのようなものか
もっとありますよね、たぶん・・・
さらに、例外処理はシステム全体で一貫性を保たなければならないので、「例外」という概念をミクロにもマクロにも捉える必要がある。これまた視点の転換が必要なので、ややこしい。
理解するには、サンプルとして色々な例外処理のコードを読んでみるしかない。というわけで読んでいる。しかし、読んでも設計の意図を汲み取れないことが多く、情けない。
「例外的な状況でのみ例外を使うべし」だとか「発生した例外を握りつぶすべからず」だとかいった、例外処理の作法やイディオムを理解することと、例外処理の設計と実装を実現することとの間には、それなりのジャンプがあると思う。
おそらく、理解したい問題を切り分けて、そこにだけ集中して読んでみると、よいのかも。