モデルを検証するために、javaxバリデーションを使用してWildflyアプリケーションを構築しました。 今、ValidationExceptionをキャッチする例外マッパーを記述しようとしています。オブジェクトは2つの互いに素なクラスのインスタンスです
@Provider
public class MyValidationMapper implements ExceptionMapper<ValidationException> {
@Override
public Response toResponse(ValidationException exception) {
if (exception instanceof ResteasyViolationException) {
// do something specific
}
if (exception instanceof ConstraintViolationException) {
// do something specific
}
// do something generic
}
}
あなたがValidationException
の直接のサブクラスであり、どちらも、私はResteasyViolationException
とConstraintViolationException
のための特別な処理をしたい見ることができるように。
問題はexception
がのインスタンスであり、どちらもです。
System.out.println(exception instanceof ResteasyViolationException);
System.out.println(exception instanceof ConstraintViolationException);
各回にtrue
が得られる。 したがって、マッパーの動作は例外のタイプをチェックする順序に依存します。
どうすれば可能ですか?どうやら私の理解instanceof
のいくつかのギャップがあります。またはResteasyについて特別なことがありますか?
明らかに、型は互いに素ではありません。より具体的なものを確認してください(おそらく 'else if'を使用してください)。 – chrylis
ブロックにreturn文がある場合はどちらも 'else if'は違いがありません。 @ Kayamanのヒントは役に立ちましたが、私は思ったよりも別のライブラリをサーバー上で使っているかもしれません。 – elactic