捕捉任何异常杰克逊抛出一个ExceptionMapper
问题描述:
我有一个JAX-RS项目,使用杰克逊来处理JSON转换。捕捉任何异常杰克逊抛出一个ExceptionMapper
当Jackson发生异常时,它会自动返回一个带有错误描述的字符串。
由于我想返回一个自定义的JSON对象,我创建了一个ExceptionMapper。
的问题是,它仅渔获当我指定正是异常的类型抛出的异常。
例如,当发送到方法JSON包含未知属性,这个工程:
public class MyExceptionMapper implements ExceptionMapper<UnrecognizedPropertyException>
但是,如果我改变UnrecognizedPropertyException
到PropertyBindingException
(其中第一扩展),它不会工作。
简而言之:
如何创建,捕捉杰克逊抛出的任何异常(或我的应用程序的任何其他部件,对于这个问题)一般异常映射器?
答
尝试
public class MyExceptionMapper implements ExceptionMapper<Exception>
这应该是所有异常的回退。
如果Jackson找到合适的ExceptionMapper,就会从异常中寻找hierarchie。 它看起来只要在类型层次结构中有某些东西。 因此,UnrecognizedPropertyException将由PropertyBinding-异常映射程序处理,但不是其他方式,因为UnrecognizedPropertyException映射程序更具体可能有许多子类,然后无法确定要采用哪个映射程序。所以它只能向上工作。
因为异常是基础异常,所有事情都结束了。