关于问题为什么很多程序员会用 throw 抛异常的方式来做业务消息提醒?一共有 5 位热心网友为你解答:
【1】来自网友【解压神菌】的最佳回答:
如今服务器都是性能过剩。
看中的是接口耗时。
业务消息提醒往往在进入业务流程的开头进行校验的时候抛出,这在整条链路中耗时并不高。
如果有全链路跟踪的话,你就会知道往往在调用外部服务,查询数据库最耗时。
我也这么写代码,主要是代码可读性好。
不过我一般定义一个特定的业务异常,与其它异常进行区分,然后外层 catch 住。[抠鼻]
【2】来自网友【皮蛋 XXXXL】的最佳回答:
Exception 昂贵的部分
1,异常 new 的时候,比普通 bean 多个 fillinstacktrace,因此会多消耗点性能。
2,捕获(catch)的时候,链路 stack 过深或者有特殊处理需要消耗性能。
但是,这些考虑都是次要的,第一要考虑的是关注逻辑的正确性和效率性。第二是不要滥用 Exception 机制。
你截图代码我看过了,虽然有些写法有待加强,但是确定在用“异常处理异常”,谈不上滥用。因为异常在业务代码中是“小概率”事件,那么上述两点“昂贵”路径走不到,也就不昂贵了。
以后工作遇到这类纠结问题建议按照以下套路解决:
1,优先关注主体业务的正确性和效率。
2,尊重现状,不要过早优化。
3,关注整体优化效果,亲手做实验去验证它。
【3】来自网友【小生 xs】的最佳回答:
我都用 java 了还在意这一点服务器资源的消耗?
【4】来自网友【吟游诗人田不易】的最佳回答:
你难道写的业务全都走到了异常中吗?那你得反省下自己了。如果只是极少情况出异常,对效率的影响能有多大?过度设计需要吃药!
【5】来自网友【天行九五】的最佳回答:
如果这个流程一般走不到,就用异常也没问题。