33

JPA 仕様では、システム例外とアプリケーション例外が区別されています。線が正確にどこに描かれているかについて少し混乱しています。私の推測:

アプリケーション例外は、コードまたはコードで使用されるライブラリが明示的または暗黙的にスローする例外です。

  • これには、ソースに関係なく、すべての例外、ランタイム、およびチェックが含まれますか?

システム例外は、おそらく持続性プロバイダーによってスローされた例外です。のすべてのサブクラスが確実に含まれていますjavax.persistence.PersistenceException

  • プロバイダー コードによってスローされるその他の例外についてはどうでしょうか。
  • 他の Java EE ライブラリによってスローされた例外はどうですか?
  • 例外がラップされている場合、違いはありEJBExceptionますか?

ApplicationExceptionアノテーションを使用して動作に影響を与えるにはどうすればよいですか? まだ使っているのを見たことがない。

4

2 に答える 2

10

私は、Mahesh Desai が Coderanch で提供した次の非常に明確な説明を追加する必要があると感じています。

Exception のサブクラスであり、RuntimeException および RemoteException のサブクラスではない例外はすべて、アプリケーション例外です。すべてのアプリケーション例外はチェック例外であるため、アプリケーション例外をスローできる別のメソッドをメソッド内で呼び出す場合は、呼び出し元メソッドの throws 句で宣言するか、呼び出し元メソッドの本体でキャッチするか、またはその両方を行う必要があります。 .

RemoteExceptions を除くすべてのシステム例外は未チェックの例外であり、ユーザーが処理することはできません。

于 2014-04-28T13:34:08.057 に答える