我有一个 RESTful Web 服务,它执行一些 IO 和数据库 Activity 以返回结果。
有一些我希望看到的Exceptions
,即因为未设置预期变量或我的数据库不再存在等而抛出的异常......
但是,当我抛出这些异常时,它们会被捕获并包装在 HTTP 500(内部服务器错误)
异常中,这就是客户端得到的(与根异常相反)。
我想在这里看到我的异常,而不是必须查看应用程序服务器日志。
最佳答案
你可以实现一个 ExceptionMapper 来返回你想要的任何东西。因此,例如,它可以将带有堆栈跟踪的整个异常放入响应中。
这是您在客户端想要的吗?我不确定。
客户端重建异常并重新抛出它可能是一项非常困难的工作。
此外,它非常不安全,因为堆栈跟踪会将服务器的内部代码暴露给客户端。
我建议您声明一些对客户端有意义并且您想公开的服务器错误代码。示例:
- 1000 - 连接数据库失败。
- 2000 - 其他
因此对于特定的异常,在 ExceptionMapper 中你可以将服务器异常映射到错误代码,然后在客户端重新映射它们。
关于java - 从 Jersey RESTful Web 服务中抛出信息性错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6124543/