java - 如何处理 JAX-RS 中的意外异常

标签 java spring servlets jersey jax-rs

我的技术栈是 Tomcat (servlet 3.0)、JAX-RS 的 Jersey、Spring 和 Hibernate。当出现意外错误时,例如 Hibernate 中的某些数据转换错误,我不希望客户端看到我的堆栈跟踪以了解 Tomcat 默认尝试打印的那些异常。但是我想记录这些异常,这样我就可以找到问题并解决问题。

我的第一次尝试是使用 JAX-RS 中的 ExceptionMapper 并天真地认为这可以解决我的问题。但后来我注意到 Jersey 抛出它自己的异常,例如未映射的 url 是 com.sun.jersey.api.NotFoundExceptions。这会导致记录我不想要的 404 异常。更糟糕的是,客户端不再收到 404 而是状态码 500。

我可以为 Jersey 抛出的异常创建异常映射器,但我可能会遗漏一些东西。有这样的最佳实践吗?

最佳答案

Jersey 直接抛出的所有异常都是 WebApplicationException 的子类,因此如果您想捕获所有异常,只需为该类创建一个 ExceptionMapper 即可。

关于java - 如何处理 JAX-RS 中的意外异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14562473/

相关文章:

AJAX 从 Spring-MVC Controller 获取数据

java - 我收到 java.lang.IllegalStateException : getOutputStream() has already been called for this response Exception

java - 衍生线程中的 Spring 事务

java - 如何计算比较器/比较器中的比较次数?

java - Coinbase API 测试买卖 API

java - 使用 SystemOutRule.getLog 的 AssertEquals 失败

Spring MVC 和多部分处理

java - 在 Java 中拆分多个分隔符

Java For 循环和 char 数组

javascript - 将 Javascript 值检索到 Servlet 等的可能方法