我有一个dropwizard应用程序,其中注册了一个实现ExceptionMapper<Throwable>
的全局异常处理程序。如果我从资源中抛出任何运行时异常,则映射器会被命中。
但是,在测试中,我将JSON发布到具有杰克逊多态类型缺少类型鉴别符的资源。泽西岛返回400,我可以看到在单步执行代码时会抛出JsonProcessingException
,但全局映射器并没有被击中。
我试图查看是否有任何其他异常处理程序注册并尝试取消注册它们,方法是检查environment.jersey().getResourceConfig().getSingletons()
集并且没有注册其他异常处理程序。
我还尝试为该异常创建一个特定的处理程序,但没有骰子。即便如此,如果我已经有一个全局处理程序来捕获所有Throwable,那就太奇怪了。
有没有人遇到过这个?
-
编辑:
看起来像dropwizard异常映射器确实已注册,我不知何故需要找出生命周期中发生的时间并取消注册
答案 0 :(得分:3)
是的,您需要覆盖JsonProcessingException
(JsonProcessingExceptionMapper
)的例外映射器。
看起来像dropwizard异常映射器确实已注册,我不知何故需要找出生命周期中发生的时间并取消注册
您可以了解如何在此answer上覆盖ExceptionMapper。