我的技术栈是 Tomcat (servlet 3.0)、Jersey for JAX-RS、Spring 和 Hibernate。当出现意外错误时,例如 Hibernate 中的某些数据转换错误,我不希望客户端看到我的堆栈跟踪,以了解 Tomcat 默认尝试打印的那些异常。但是,我想记录这些异常,以便找出问题所在并进行修复。
我的第一次尝试是使用来自 JAX-RS 的 ExceptionMapper 并且天真地认为这可以解决我的问题。但后来我注意到 Jersey 抛出了它自己的异常,例如未映射的 url 是 com.sun.jersey.api.NotFoundExceptions。这会导致记录我不想要的 404 异常。更糟糕的是,客户端不再获得 404,而是状态码 500。
我可以为球衣抛出的异常创建异常映射器,但我可能会错过一些东西。有这样的最佳实践吗?