Hard work by INTERNET

ベンチャーで働くひとりぼっちWEB開発者が頑張るブログ

ソフトウェアでの業務例外とシステム例外

「例外」という概念について調べていたので理解したことを書いてみる。

プログラミング言語には例外という仕組みがあって、コールスタックを無視して特定の場所にジャンプすることができる。いろんな場所で例外を使ってしまうとプログラムの流れを追うことが困難になってしまうため、例外を使う場所は異常系に限るとよい、とされている。

例外を使う場所を異常系に絞ることでルーチンは正常系だけ記述するだけで済むためシンプルになるということだ。

異常系にのみ適用する、という話なのだけど何が「異常系なのか」を考える必要がある。 異常系といえば、「データベースへの接続エラー」と「ユーザの入力不備」のような2種類に分けることができる。 前者はシステム例外や技術的例外、後者は業務例外と喚ばれている。

業務例外も異常系の一種なのだが、ユーザからアクションによって発生することが多く、発生した事象をユーザにフィードバックしなければならないため、異常系ではあるが、例外としては扱ってはいけない。

システム例外は、ユーザが原因でははいのでフィードバックしても何も意味がない。開発者にエラーを通知するべきなので例外を補足せずにシステムエラーとして投げるべきだ。システムエラーとして投げれば開発者に通知することができるだろう。

まとめ

「例外」を使う場所はシステムの異常系に限ろう。