代码之家  ›  专栏  ›  技术社区  ›  kapso

RESTEasy中的例外外观问题

  •  3
  • kapso  · 技术社区  · 16 年前

    在我的JAXRS应用程序中,我有两个 ExceptionMapper 注册为 @Provider

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

    当我的应用程序抛出一个新的 MyCustomRuntimeException ,异常被捕获在 MyExceptionMapper ,即使(JAX-RS规范说)它应该在MyCustomRuntimeExceptionMapper中捕获。

    以下是JAXRS所说的-

    JAX-RS还支持异常继承。当出现异常时 抛出时,JAX-RS将首先尝试为此找到一个例外 异常类型。如果找不到,它将寻找地图绘制者 它可以处理异常超类。这将继续下去 处理,直到不再有可匹配的超类。

    有人知道这是怎么回事吗?

    2 回复  |  直到 9 年前
        1
  •  1
  •   Varun Singh    11 年前

    通过在我的网站上声明如下提供商,我能够正确地获得它。xml:

    <context-param>
            <param-name>resteasy.providers</param-name>
            <param-value>CustomExceptionHandler,DefaultExceptionHandler</param-value>
    </context-param>
    
        2
  •  0
  •   Mark Lutton    16 年前

    我也有这个问题。它似乎在寻找子类之前找到了异常的超类。这样我就不会有一个ExceptionMapper for Exception了。我必须处理一个特定于应用程序的异常,它有子类;我不能为他们单独设置异常映射器。我有一个超类的异常映射器,然后是一堆“if(e instanceof subcassa)”语句。