0

エンティティのIDを受け取るアプリケーション サービスにメソッドがあります。

 Document doStuff(Long documentId);

私のメソッドでは、渡された ID が以前に保存されたエンティティと一致することを確認しています。そうでない場合は、例外がスローされます。

さて、私の疑問は、これcom.application.exceptions.DocumentNotFoundExceptionは aRuntimeExceptionまたはaExceptionですか?

ケースを管理するためにそれを使用するService力は、IDが間違っているか、それとも暗黙的ですか?

4

5 に答える 5

0

EntityNotFoundException が派生するため

javax.persistence.PersistenceException 

およびjava.lang.RuntimeExceptionから派生した PersistenceException

真っ直ぐ前に伸ばして

java.lang.RuntimeException.
于 2013-10-23T08:52:12.290 に答える
0

さて、私の疑問は、これcom.application.exceptions.DocumentNotFoundExceptionは aRuntimeExceptionまたはaExceptionですか?

例外クラスとそのスーパークラスのソースコードが表示された場合にのみ、その質問に答えることができます。

  • がスーパークラスの場合RuntimeException、例外はRuntimeException; つまり、未チェックの例外です。

  • それ以外の場合、Exceptionがスーパークラスの場合、例外はException; つまり、これはチェック例外です。

  • そうしないと、 or のサブクラスを宣言することで「ルールを破る」ことになりますError(heaven forbid!) Throwable。(前者の場合、例外はuncheckedです。後者の場合は...あなたはトラブルを求めています!)


IDが間違っている場合を管理するためにそれを使用するサービスを強制する必要がありますか、それとも暗黙的ですか?

それは、そのメソッドのセマンティクスと一般的な API に基づいて決定することです。そして、チェック例外が良いアイデアかどうかは意見の問題です。しかし、私が決定するために使用する基準は次のとおりです。

  • そのメソッドが無効な ID で呼び出されるのが「バグ」(つまり、プログラミング エラー) である場合は、未チェックの例外にすることをお勧めします。

  • これは、アプリケーションが例外を処理しようとすることを期待する問題であり、プログラマーが忘れないように、それをチェック例外にすることをお勧めします。

これらの判断は、ケースバイケースで行う必要があります。

于 2013-10-24T17:27:38.640 に答える