我的技术栈是 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/