我在JAVA中使用Jersey 1.14 for REST。如果资源的POST正文中有任何错误,Jersey会抛出异常,并将我的内部类提到客户端。 我继续希望在从我的应用程序传递错误时给出错误,但是抑制Jersey抛出的错误(对于甚至没有到达我的应用程序的请求,因为Jersey识别异常并抛出它)。 我搜索了任何标志来实现这一点,但找不到任何东西。有没有办法做到这一点?
编辑: 重新提出问题:静音/禁止错误堆栈跟踪,以便在球衣中输入无效
更新: 我尝试使用ExceptionMapper,捕获java.lang.Exception。它会在内容类型丢失时捕获,但在对象转换中出现错误时无法捕获异常。
答案 0 :(得分:2)
您可以使用 ExceptionMapper 。这是关于它的an old article。
答案 1 :(得分:0)
Jersey会抛出代码中未处理的异常。因此,您需要将您的Web服务代码包装在try/catch
中。并捕获Exception
类以确保您在Web服务类中正常处理它。
答案 2 :(得分:0)
我相信这可以通过 server 配置来实现,因为Jersey似乎没有任何相关的configuration option。
您使用的是哪个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
。它还可以检查应用程序环境并仅在开发中显示堆栈跟踪。
答案 3 :(得分:0)
如果要解析xml,可以编写自定义ContextResolver来捕获异常。我的json案例你可能需要一个messagebodyreader / writer