1

我在 JAVA 中将 Jersey 1.14 用于 REST。如果资源的 POST 正文中有任何错误,Jersey 会抛出异常,向客户端提及我的内部类。当错误从我的应用程序传递时,我继续希望给他们错误,但抑制 Jersey 抛出的错误(对于甚至没有到达我的应用程序的请求,因为 Jersey 识别异常并抛出它)。我搜索了任何标志来实现这一点,但找不到任何东西。有没有办法做到这一点?

编辑:改写问题:静音/抑制球衣中无效输入的错误堆栈跟踪

更新:我尝试使用 ExceptionMapper,捕获 java.lang.Exception。它会像缺少 Content-Type 一样捕获异常,但在对象转换出错时无法捕获异常。

4

4 回答 4

2

您可以使用ExceptionMapper。这是一篇关于它的旧文章。

于 2013-09-11T08:44:05.947 回答
0

我相信这可以通过服务器配置来实现,因为 Jersey 似乎没有任何相关的配置选项

您使用的是哪个 servlet 容器?


(编辑)对于 Tomcat 搜索“tomcat 抑制异常堆栈跟踪”。大多数答案会让你error-page在你的web.xml

<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/your-custom-error-page.jsp</location>
</error-page>

而且,当然,实现一个your-custom-error-page.jsp不包括堆栈跟踪的。它还可以检查应用程序环境并仅在 DEVELOPMENT 中显示堆栈跟踪。

于 2013-09-11T07:22:17.067 回答
0

如果您正在解析 xml,则可以编写自定义 ContextResolver 来捕获异常。我是json的情况,你可能需要一个messagebodyreader/writer

于 2014-02-23T16:31:52.880 回答
0

Jersey 将抛出您的代码中未处理的异常。所以你需要将你的 web 服务代码包装在try/catch. 并抓住Exception课程以确保您在 Web 服务课程中优雅地处理它。

于 2013-09-11T07:10:27.550 回答