例外処理が分からない、理解したい

例外処理がよく分からないので取り組まなければならない、というメモ。

何が難しいかというと、検討すべき問題が複数ある上に、それらを実現する言語機能や実装方法にさまざまな種類があり、どれがよいと一概にいえない点です。

  • エラーメッセージをどこに出力するか
    • ユーザのためのエラーメッセージか
    • 開発者のためのエラーログか
  • エラーメッセージをどのように管理するか
    • クラスやenumで持つのか
    • 設定ファイルで持つのか
    • パラメタのバインドをどうするのか
  • 各例外の後処理をどう定義するか
  • 標準例外とユーザ定義例外をどのように設計するか
    • 粒度
    • 階層関係
  • エラーの数や種類が増えても対応しやすい設計とはどのようなものか

もっとありますよね、たぶん・・・

さらに、例外処理はシステム全体で一貫性を保たなければならないので、「例外」という概念をミクロにもマクロにも捉える必要がある。これまた視点の転換が必要なので、ややこしい。

理解するには、サンプルとして色々な例外処理のコードを読んでみるしかない。というわけで読んでいる。しかし、読んでも設計の意図を汲み取れないことが多く、情けない。

「例外的な状況でのみ例外を使うべし」だとか「発生した例外を握りつぶすべからず」だとかいった、例外処理の作法やイディオムを理解することと、例外処理の設計と実装を実現することとの間には、それなりのジャンプがあると思う。

おそらく、理解したい問題を切り分けて、そこにだけ集中して読んでみると、よいのかも。