C# は検査例外がないから

C# は検査例外がないから、作るときは楽チンだけど、作り終わってからが大変。

.NET Framework 1.1 の CLR は、捕捉されない例外が発生したらスレッドが黙って死ぬんだけど、これは .NET Framework 2.0 からアプリが死ぬように改善(?)された。

Java とは結構ポリシーが異なる。

ちなみに Java に実行時例外がある理由は:

  1. いちいちチェックしているとコーディングが大変だから
  2. ロジックによって完全に発生しないことが証明できるから

ということになる。

Java で業務処理例外を実装する場合、上記を念頭に置いて設計すると、レビュー時に「おっ、こいつはわかってるな」と思われるか「業務処理例外が RuntimeException の派生クラスとかw」と一蹴されるかどちらかでしょう。いや、「業務処理例外なんてものはあってはならない」ということになれば、そのレビュアーが一番良いレビュアーかもしれない。