9

「キャッチ」したい3つの例外クラスがあるとしましょう。

  • ジャージーのWebApplicationException
  • MyExceptionはRuntimeExceptionを拡張します
  • 例外

WebApplicationExceptionをJerseyによって自動的にマッピングし、MyExceptionをMyMapperによってマッピングし、他の例外もMyFallbackMapperによってマッピングされるようにします。

したがって、(制御したい)例外が最終的にExceptionを拡張するため、MyMapper(MyFallbackMapperではなく)がMyExceptionに使用されるという保証はありますか?

4

1 に答える 1

13

JAX-RS 1.1 仕様、第 4.4 章:

リソース クラスまたはプロバイダー メソッドが例外をスローすると、JAX-RS ランタイムは例外を適切な HTTP 応答にマップしようとします - セクション 3.3.4 を参照してください。アプリケーションは、例外マッピング プロバイダーを指定して、このマッピングをカスタマイズできます。

例外マッピング プロバイダーは、チェック例外またはランタイム例外を Response のインスタンスにマップします。例外マッピング プロバイダは ExceptionMapper インターフェイスを実装し、@Provider で注釈が付けられます。例外マッピング プロバイダが存在する例外をリソース メソッドがスローすると、一致するプロバイダを使用して Response インスタンスが取得されます。結果の Response は、例外をスローしたメソッドが代わりに Response を返したかのように処理されます。セクション 3.3.3 を参照してください。

例外をマップする例外マッピング プロバイダーを選択する場合、実装は、ジェネリック型が例外の最も近いスーパークラスであるプロバイダーを使用する必要があります。

于 2012-10-04T10:59:04.650 に答える