首页 文章

RESTEasy中的ExceptionMapper问题

提问于
浏览
3

在我的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 . 如果找不到,它将寻找一个可以处理异常超类的映射器 . 它将继续这个过程,直到没有更多的超类来匹配 .

有谁有线索,这里发生了什么?

2 回答

  • 0

    通过在我的web.xml中声明如下的提供程序,我能够做到正确:

    <context-param>
            <param-name>resteasy.providers</param-name>
            <param-value>CustomExceptionHandler,DefaultExceptionHandler</param-value>
    </context-param>
    
  • 1

    我也有这个问题 . 看起来好像它在查找子类之前找到了异常的超类 . 这使我无法使用ExceptionMapper for Exception . 有一个特定于应用程序的异常,我必须处理它有子类;我不能为他们单独的异常映射器 . 我有一个超类的异常映射器,然后是一堆“if(e instanceof SubClassA)”语句 .

相关问题