loy*_*low 2 java soa spring spring-mvc
由于某种原因我不喜欢抛出异常,可能是因为我不知道的性能损失,想知道我是否应该重新考虑这个问题。
我的服务层(使用 Dao 的 + 业务逻辑等)是否应该抛出异常?
public ModelAndView createProduct(@Valid ProductForm productForm, ..) {
ModelAndView mav = new ModelAndView(...);
if(bindingResult.hasErrors()) {
return mav;
}
// throw exception if user doesn't have permissions??
productService.create(product, userPermissions);
}
Run Code Online (Sandbox Code Playgroud)
所以我在 ProductService 的 create 方法中的选项:
要记住的事情:
我可能会在非 Web 应用程序中重新使用此服务层,也可以在 Restful Web 服务中使用。
什么被认为是最佳实践?
取决于您所说的服务和异常是什么意思,但在上下文中,我将假设来自 HTTP 端点的 java 异常。
答案是不。服务应该以一般的方式暴露错误。在 Restful 服务的情况下,错误应该作为带有错误代码的 HTTP 状态传播。服务不应将实现细节泄露给消费者。这是一个自然边界。
消费者应该处理这些错误情况并决定最合适的沟通方式。它很可能会选择生成异常。但是这些异常与导致服务返回错误代码的原始问题/接收是脱节的。
更进一步,我会说@yahir 他说的也是对的。HTTP 服务会暴露 HTTP 错误,并且它很可能只是使用下面的另一个服务返回另一种错误,但它的工作是适当地处理或映射它们。
| 归档时间: |
|
| 查看次数: |
6295 次 |
| 最近记录: |