2017-05-05 126 views
4

我有一个JAX-RS项目,使用杰克逊来处理JSON转换。捕捉任何异常杰克逊抛出一个ExceptionMapper

当Jackson发生异常时,它会自动返回一个带有错误描述的字符串。

由于我想返回一个自定义的JSON对象,我创建了一个ExceptionMapper

的问题是,它仅渔获当我指定正是异常的类型抛出的异常。

例如,当发送到方法JSON包含未知属性,这个工程:

public class MyExceptionMapper implements ExceptionMapper<UnrecognizedPropertyException> 

但是,如果我改变UnrecognizedPropertyExceptionPropertyBindingException(其中第一扩展),它不会工作。

简而言之:

如何创建,捕捉杰克逊抛出的任何异常(或我的应用程序的任何其他部件,对于这个问题)一般异常映射器?

回答

0

尝试

public class MyExceptionMapper implements ExceptionMapper<Exception> 

这应该是所有异常的回退。

如果Jackson找到合适的ExceptionMapper,就会从异常中寻找hierarchie。 它看起来只要在类型层次结构中有某些东西。 因此,UnrecognizedPropertyException将由PropertyBinding-异常映射程序处理,但不是其他方式,因为UnrecognizedPropertyException映射程序更具体可能有许多子类,然后无法确定要采用哪个映射程序。所以它只能向上工作。

因为异常是基础异常,所有事情都结束了。