使用dropwizard捕获json处理异常?

时间:2015-05-27 20:11:52

标签: java json jackson jersey-2.0 dropwizard

我有一个dropwizard应用程序,其中注册了一个实现ExceptionMapper<Throwable>的全局异常处理程序。如果我从资源中抛出任何运行时异常,则映射器会被命中。

但是,在测试中,我将JSON发布到具有杰克逊多态类型缺少类型鉴别符的资源。泽西岛返回400,我可以看到在单步执行代码时会抛出JsonProcessingException,但全局映射器并没有被击中。

我试图查看是否有任何其他异常处理程序注册并尝试取消注册它们,方法是检查environment.jersey().getResourceConfig().getSingletons()集并且没有注册其他异常处理程序。

我还尝试为该异常创建一个特定的处理程序,但没有骰子。即便如此,如果我已经有一个全局处理程序来捕获所有Throwable,那就太奇怪了。

有没有人遇到过这个?

-

编辑:

看起来像dropwizard异常映射器确实已注册,我不知何故需要找出生命周期中发生的时间并取消注册

1 个答案:

答案 0 :(得分:3)

是的,您需要覆盖JsonProcessingExceptionJsonProcessingExceptionMapper)的例外映射器。

  

看起来像dropwizard异常映射器确实已注册,我不知何故需要找出生命周期中发生的时间并取消注册

您可以了解如何在此answer上覆盖ExceptionMapper。