エンティティタイプごとに特定のException
クラスを作成する必要がありますか?
コードの呼び出し元がエンティティ定義の位置を突き止めることから合理的に回復でき、エンティティタイプごとに異なるリカバリ戦略をとることができれば恩恵を受けることができます。そうでなければいいえ。
安全にgenericsを使用できますか?このクラスのように、NotFoundExceptionはExceptionを継承し、コンストラクタは処理しているエンティティの型を宣言します。
コードの発信者が障害に関連するエンティティタイプを切り替えるのに役立ちません。型消去して、それが
try {
callYourCode();
} catch (MyParameterizedException ex) {
// some handling code
} catch (MyParameterizedException ex) {
// some different handling code for type b
}
と第二catch
ブロックするように見えるので
あなたが原因型消去に例外タイプMyParameterizedException<T>
を定義した場合でも、呼び出し側は
try {
callYourCode();
} catch (MyParameterizedException<TypeA> ex) {
// some handling code
} catch (MyParameterizedException<TypeB> ex) {
// some different handling code for type b
}
を行うことはできません到達不能なコードなので、コンパイル時にjavac
で拒否されます。最初のキャッチブロックは、タイプbに対して入力され、エンティティ(および他のタイプも同様)を入力します。
ジェネリックを使用せずに特定の例外をスローする必要がある場合、その例外は抽象クラスまたはインタフェースNotFoundException
を拡張または実装する必要がありますか?
あなたのコードの発信者が、そうでなかった場合に驚くかもしれません。
あなたのコードの呼び出し元は、はい、他のNotFoundException
Sを処理するコードで扱うエンティティの障害を持っていることから恩恵を受ける場合。
コードの呼び出し側が、他の条件と同じように扱われるエンティティタイプ定義の検索に失敗したくない場合は、いいえ。
ポイントEntityNotFoundExceptionがjavax.persistance.EntityNotFoundExceptionための重複した名前であることに留意しなければ。 –