假设有一段比较复杂的代码,可能性太多或者很难考虑周到,担心某种特定情况会有运行时异常,这种代码需要try住吗?
需要。
从程序健壮度上来说,复杂代码一般是其中所包含的业务比较复杂,深刻拆解一下,也就是其中的业务步骤比较多。
一般在处理这种业务时,不止需要在最外围trycatch,还需要在分步中也trycatch,因为中间业务环节的数据有可能也会出现非正常的问题,甚至有可能出现数据转换错误。
但是需要注意的是不是每一步都要trycatch,这样的话程序执行的性能成本就太高了。在我们真实业务情况下一般需要辅助做一下这几个处理,以缓解到处都是trycatch的问题。
1、数据预处理:在复杂业务之前,需要保证数据的完整性和可预料性,例如某个数字一定是数字而不是null值或者空串。这个时候,数据库里面的非空设置就十分有用,如果不能保证数据库层面的数据正常,那就需要在model层保证数据的正常,否则不开始复杂业务计算。
2、多函数调用。这个办法其实最大的功效是降低复杂计算的难度,但是其实它里面也是可以采用分化处理或者分部处理的办法降低复杂计算里面出现异常情况的出现。还有,分步计算里面如果出现异常,那么在子函数里面也是可以进行异常处理的,这样可以增强程序的总体健壮度。
3、日志。在复杂计算里面,适时使用日志。不要小看日志,怕出现异常是应为程序运行过程中有些情况不可控,而这个时候是非调试状态,你不知出现了什么问题,而日志是有效追踪这些问题的最好办法,数据维护的人一般出现问题后第一个要看的东西都是运行日志。那么你作为开发在程序里面用日志设置锚点就相当重要了。日至一般可以和trycatch成对出现,但是建议你在没有trycatch但是又需要白盒看到数据进行直观判断的的地方也加上日志,这样对一些抓不到的数据逻辑错误也能比较直观地进行追踪。
4、养成良好的编码习惯。编码习惯很重要,特别是在处理复杂编码的情况下。首先,要养成多写注释的习惯。外国人的代码里面有时候注释比代码还要多,就是给后面出现问题提供参考的。而复杂代码有时候写着写着把你自己都会写进去,所以写个注释是理清思路的好办法。而高效率的编码是降低出错几率的有效手段。你不可能将所有的异常问题都指望程序能给你处理,这个时候就需要你在代码里面用良好的习惯来杜绝一些低级的代码错误异常。比如说类调用错误什么的。
5、异常抓住的处理。异常抓住以后,有些异常是不用处理的,比如说数字为空了,有时仅仅是他没有被赋初值,或者连接什么的没有初始化连接对象,完全可以在trycatch里面给他一个初值或造一个连接对象,然后finally里面继续执行就好了。这种异常未必要抛出去单独处理,在程序里面也可以跟业务逻辑一并处理了。
大概就这么多了。
需要
https://blog.csdn.net/qq_40765213/article/details/79148751
其实只要代码复杂起来会出现问题,有些甚至简单的代码也会出问题,try catch本质上是捕获异常,基于这样的想法,只要统一处理异常,那么所有的异常,不管是已知还是未知,都交由统一异常处理。这样就不用谢try catch 了