29

メソッドのすべての呼び出し元が Exception (RuntimeExceptions を含む可能性がある) をキャッチする必要があることを意味する throw の代わりにnew Exception("Some message", maybeSomeCause)、問題が発生したときに、より具体的な種類の例外をスローしたいと考えています。

Exception または別の例外タイプを拡張する独自の例外タイプを作成できますが、次のようなコア Java 言語に付属するいくつかの例外を再利用することをお勧めします。

  • IllegalArgumentException
  • サポートされていない操作例外
  • IO例外
  • その他?

私が見逃しているものは他にありますか?ここで「コア」例外の基本的なリストを見つけました: http://rymden.nu/exceptions.html、面白い説明付き。

ありがとう!

編集:

「コア」例外の適切なリストはありますか?

これまでのリスト:

4

5 に答える 5

25

はい、そうするのはとても良いことです。実際、Effective Java, 2nd ed にも書かれています。248 ページの項目 60 を参照してください: 「標準例外の使用を優先する」

既存の例外を再利用すると、いくつかの利点があります。これらの中で最も重要なのは、API がプログラマーが既に慣れ親しんでいる確立された規則と一致するため、API の習得と使用が容易になることです。2 番目に近いのは、API を使用するプログラムは、見慣れない例外で散らかっていないため、読みやすくなっているということです。最後に (少なくとも)、例外クラスが少ないということは、メモリ フットプリントが小さくなり、クラスのロードにかかる時間が短縮されることを意味します。

于 2012-04-04T17:52:27.537 に答える
1

Exceptionクラスが例外をスローする原因となったシナリオを合理的に説明している場合、クラスを再利用することは絶対に理にかなっています。

于 2012-04-04T17:51:59.377 に答える
0

コードのユーザーが 2 つの異なる例外で異なることを行う必要がある場合、それらは別個の例外タイプである必要があります。とは言っても、JDK 例外は「プログラマー エラー」例外のほとんどをカバーIllegalArgumentExceptionしています。

于 2012-04-04T17:52:45.820 に答える