[英]ExceptionMapper issue in RESTEasy
在我的JAXRS應用程序中,我有2個ExceptionMapper
注冊為@Provider
public class MyExceptionMapper implements ExceptionMapper<Exception> {...}
public class MyCustomRuntimeExceptionMapper implements ExceptionMapper<MyCustomRuntimeException> {...}
當我的應用程序拋出一個新的MyCustomRuntimeException
,異常會被捕獲到MyExceptionMapper
,即使(JAX-RS規范說)它應該被捕獲到MyCustomRuntimeExceptionMapper中。
以下是JAXRS所說的 -
JAX-RS也支持異常繼承。 拋出異常時,JAX-RS將首先嘗試為該異常的類型找到ExceptionMapper。 如果找不到,它將尋找可以處理異常超類的映射器。 它將繼續這個過程,直到沒有更多的超類來匹配。
有沒有人有線索,這里發生了什么?
通過在我的web.xml中聲明如下的提供程序,我能夠做到正確:
<context-param>
<param-name>resteasy.providers</param-name>
<param-value>CustomExceptionHandler,DefaultExceptionHandler</param-value>
</context-param>
我也有這個問題。 看起來好像它在查找子類之前找到了異常的超類。 這使我無法使用ExceptionMapper for Exception。 有一個特定於應用程序的異常,我必須處理它有子類; 我不能為他們單獨的異常映射器。 我有一個超類的異常映射器,然后是一堆“if(e instanceof SubClassA)”語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.