【问题标题】:Collect all errors/exceptions occured, and output them收集所有发生的错误/异常,并输出
【发布时间】:2014-01-21 18:21:14
【问题描述】:

我正在使用 Jersey 开发我的 REST Web 服务。

我正在尝试实现验证,为此我使用了与 JSR-303 Bean Validation Jersey 提供的出色集成。

然后我定义一个 ExceptionMapper 以从发生的错误中输出我想要的内容。问题是有时,异常不会发生在 Bean Validation 的上下文中。

例子:

客户端发送一个无效的浮点值(例如“ABC”)。 Jackson 抛出异常,因为它无法将给定的 JSON 解析为浮点值。这是意料之中的。

我可以为此异常编写一个 ExceptionMapper 并将其输出到客户端。 但是,我想要的是收集所有这些来自不同来源的不同异常,并将它们全部输出。换句话说,我想在同一个响应中输出解析期间发生的错误和来自 Bean Validation 的错误,而不是单独输出。

有什么办法可以继续收集所有的异常,最后全部输出? 我假设会发生的第一个问题是,在 Jackson 正确解析请求之前,Bean Validation 永远不会发生。

【问题讨论】:

    标签: java rest jersey bean-validation jersey-2.0


    【解决方案1】:

    正如您推测的那样,没有办法做到这一点,因为异常发生在不同的时间。如果 JSON 无效,则 Jersey 无法继续,因此不会进行 bean 验证。

    【讨论】:

    • 所以没有办法做到这一点?这是令人失望的。 :/ 客户端验证必须以它应该的方式处理这个......
    • 它们是非常不同的东西。从逻辑上讲,如果 JSON 不解析,那么您希望 Jersey 怎么处理?
    • 有道理,但 json 本身 有效的。这只是一个普通的字符串。问题是给定的字符串不是有效的浮点数。我希望我可以捕获这个异常,将该字段设置为 null,然后继续进行 bean 验证,然后在一个响应中输出所有错误。我承认这是一个相当大的挑战。
    猜你喜欢
    • 2019-11-30
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多