【问题标题】:Catch json processing exception with dropwizard?使用 dropwizard 捕获 json 处理异常?
【发布时间】:2015-05-27 20:11:52
【问题描述】:

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

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

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

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

有人遇到过吗?

--

编辑:

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

【问题讨论】:

    标签: java json jackson jersey-2.0 dropwizard


    【解决方案1】:

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

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

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

    【讨论】:

    • 完美,谢谢!我想知道为什么我无法取消注册它们,这是因为我将 dropwizard 8 与球衣 2 一起使用,所以该答案中的标志是完美的。
    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    相关资源
    最近更新 更多