正常来说,如果一个 Service
因为数据验证未通过等原因,需要驳回请求,则只能多层 return error
,然后在 Controller
里依据某些约定来返回对应的报错信息。
我现在是通过全局异常处理来统一返回。在 Service
里需要中断请求、报错返回的情况下,直接抛出一个 RuntimeException
,然后被全局处理捕获,按约定统一返回。
一直以来,我都拒绝第一种方式,因为第一种方式需要冗杂的代码来进行返回的控制,并且难以达到最好的效果。 但是我今天在阅读 [阿里巴巴 Java 开发手册时] ,上面标注了:
[强制] 异常不要用来做流程控制,条件控制。 说明:异常设计的初衷是解决程序运行中的各种意外情况,且异常的处理效率比条件判断方式要低很多。
那么该如何抉择?
如果抛出预加载的静态异常对象呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.