我所知,在休息服务中处理异常并将错误消息返回给客户端的最流行的决策是捕获WebApplicationException或MappableContainerException。但是他们正在扩展RuntimeExceprion(我不明白为什么)。据我所知,我们应该避免处理运行时异常。
我需要处理诸如"具有此名称的实体已经存在"之类的异常。我确定这不是运行时异常。
还有其他方法吗?我现在正在研究包装纸。也许你能解释一下解决我问题的最佳方法?
我处理这个问题的方法是拥有自己的异常层次结构,并构建一个单独的 ExceptionMapper 来处理这个层次结构。 这允许我以标准化的方式传回我需要的任何信息(在我的例子中是 JSON 格式的响应)。
我仍然会有一个用于WebApplicationException的ExceptionMapper,否则最终用户可能会收到一些令人讨厌的响应。 如果你想特别安全,那么你也可以为异常放一个,它可以拾取你可能错过的任何其他东西(例外会转到它们最具体的异常映射器,所以为异常放置一个不会影响它们)。