假设我有在Dropwizard端点,说如何覆盖Dropwizard的默认资源异常处理?
@GET
public Response foo() { throw new NullPointerException(); }
当我打这个端点它记录异常和一切,这是伟大的!我喜欢它。我最不喜欢的是它向status: ERROR
(这很好)的用户返回一个很大的状态对象,以及一个巨大的堆栈跟踪,我不那么兴奋。
很明显,最好是自己动手处理和处理异常情况,但有时他们会滑过去。每次在整个资源周围编写try catch块都很好,但(a)很麻烦,(b)我总是更喜欢自动化解决方案来“记住”解决方案。
所以我想什么是什么,执行以下操作:
- 日志中的堆栈跟踪(我用SLF4J但我相信它会为任何工作)
- 返回通用错误响应,这不会公开有关我的服务器的潜在特权信息!
我觉得必须有一个内置的方式来做到这一点 - 它已经以相对较好的方式处理异常 - 但搜索文档还没有发现任何东西。有这个好的解决方案吗?
检查了这一点:http://gary-rowe.com
然后在泽西岛注册的异常映射器/ agilestack/2012/10/23/how-to-implement -a runtimeexceptionmapper-for-dropwizard/ – Reek
建议开始区分你抛出的异常。使用自定义异常来处理你知道的故障,并用漂亮的日志记录把它们抛出在相同的运行时异常应该抛出并修复。如果你不想把它显示给最终用户,你可能会捕获一个通用的异常,记录细节并相应地定制'Response'和'entity'。 – nullpointer