3

私のJAXRSアプリケーションでは、2つExceptionMapper登録しています@Provider

public class MyExceptionMapper implements ExceptionMapper<Exception> {...}

public class MyCustomRuntimeExceptionMapper implements ExceptionMapper<MyCustomRuntimeException> {...}

アプリケーションが new をスローすると、(JAX-RS 仕様によると) MyCustomRuntimeExceptionMapper 内でキャッチする必要があるにもかかわらずMyCustomRuntimeException、例外は 内でキャッチされます。MyExceptionMapper

これがJAXRSの言うことです-

JAX-RS は、例外の継承もサポートしています。例外がスローされると、JAX-RS はまずその例外のタイプの ExceptionMapper を見つけようとします。見つからない場合は、例外のスーパークラスを処理できるマッパーを探します。照合するスーパークラスがなくなるまで、このプロセスが続行されます。

ここで何が起こっているのか、誰も手がかりを持っていますか?

4

2 に答える 2

1

web.xml でプロバイダーを次のように宣言することで、正しく取得できます。

<context-param>
        <param-name>resteasy.providers</param-name>
        <param-value>CustomExceptionHandler,DefaultExceptionHandler</param-value>
</context-param>
于 2015-04-07T06:40:28.497 に答える
0

私もこれに問題がありました。サブクラスを探す前に、例外のスーパークラスを見つけたかのように見えます。これにより、Exception の ExceptionMapper を使用できなくなります。サブクラスを持つ、対処しなければならないアプリケーション固有の例外があります。それらに個別の例外マッパーを用意することはできません。スーパークラスの例外マッパーが 1 つあります。次に、"if (e instanceof SubClassA)" ステートメントがたくさんあります。

于 2010-07-14T19:06:17.383 に答える