【问题标题】:How to avoid handling RunTimeException in Jersey如何避免在泽西岛处理 RunTimeException
【发布时间】:2013-01-30 18:41:59
【问题描述】:
据我所知,在休息服务中处理异常并将错误消息返回给客户端的最流行的设计是捕获 WebApplicationException 或 MappableContainerException。但是他们正在扩展 RuntimeExceprion(我不明白为什么)。据我所知,我们应该避免处理 RuntimeExceptions。
我需要处理诸如“具有该名称的实体已存在”之类的异常。我确定这不是运行时异常。
还有其他方法吗?我现在正在研究包装器。你能解释一下解决我的问题的最佳方法吗?
【问题讨论】:
标签:
rest
exception
jersey
unchecked-exception
【解决方案1】:
我处理这个问题的方法是拥有自己的异常层次结构,并构建一个单独的 ExceptionMapper 来处理这个层次结构。这允许我以标准化的方式传回我需要的任何信息(在我的例子中是 JSON 格式的响应)。
我仍然有一个用于 WebApplicationException 的 ExceptionMapper,否则最终用户可能会收到一些看起来很讨厌的响应。而且,如果您想更加安全,那么您还可以将一个用于 Exception 以获取您可能错过的任何其他内容(异常会转到最具体的异常映射器,因此将一个用于 Exception 不会影响他们)。