使用 dropwizard 捕获 json 处理异常?

Catch json processing exception with dropwizard?

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

但是,在测试中,我将 JSON 发布到一个缺少 jackson 多态类型类型鉴别器的资源。 Jersey 返回 400,我可以看到在单步执行代码时抛出 JsonProcessingException,但全局映射器没有被击中。

我试图查看是否有任何其他异常映射器注册并尝试注销它们,方法是检查 environment.jersey().getResourceConfig().getSingletons() 集并且没有其他异常映射器注册。

我也试过为那个异常创建一个特定的处理程序,但没有。即便如此,如果我已经有一个全局处理程序来捕获所有 Throwable,那还是有点奇怪。

有人遇到过吗?

--

编辑:

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

是的,您确实需要覆盖 JsonProcessingException (JsonProcessingExceptionMapper) 的异常映射器。

looks like the dropwizard exception mapper does get registered and I somehow need to find out when in the lifecycle that happens and unregister it

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