Service 层需要返回一些错误状态的需求,大家都是怎么设计的?

2018-11-01 16:13:00 +08:00
 fkdog
比如一些读写操作需要在一个事物里。
有些状态需要进行判断,如果不符合则需要返回 controller 层一些状态,这样的场景大家都是怎么进行设计的?

我是通过自定义异常,然后从 service 层抛出,在 controller 层进行统一处理。
但是感觉这样的方式太粗暴了点。

如果把部分数据判断逻辑放在 controller 层里,因为不在一个事物中可能会有数据不一致(规范要求 controller 层不能加 @Transactional 注释)。
2142 次点击
所在节点    Java
4 条回复
Aidenboss
2018-11-05 10:39:17 +08:00
确实可以在 service 层抛出异常。
比如我有一个 用户名为空的 异常。
@ResponseStatus(code = 500)
class UsernameEmptyException extends RuntimeException {}
然后 service 层可以直接抛出。
然后定义一个全局的 ExceptionHandler,在那里返回结果。controller 就不需要做额外的处理。
fkdog
2018-11-05 10:43:21 +08:00
@Aidenboss 那这样的话,可能会定义很多种异常。
定义单独一个异常,封装 error code 和 error message,全局拦截直接返回错误提示。
legiorange
2018-11-05 13:41:18 +08:00
spring boot 可以全局拦截,正如 fkdog 所说的那样,我觉得这个自定义是最优解决方案。
zhazi
2018-11-11 11:40:27 +08:00
可以封装个容器 类似 resultbean,可预知的业务异常包裹起来,没有异常传递数据

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/503453

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX