私以为异常处理在人编程的时候无用,在机器自动编程的时候有用。人编程时候,需要对入参做精确判断才能使程序继续,在计算过程中,需要对子函数精确划分,对各个步骤的运算做参与值以及输出值的精确限定或判断。这是基本素养的问题,而不能依赖于异常。即便产生了异常,catch到了,又能做啥处理呢?去限制上游的输入?还是重新配置输入端的参数?这似乎都是不合理的,因为异常,就是你思虑范围之外的东西,你不能基于不可控的东西去产生逻辑,这往往带来新的不可控。那么异常产生后,让程序终止?也不行,程序终止了,还有啥用呢?预期结束了。
但是在机器自动编程的时候,机器无法像人一样去基于相关材料准确判断入参,以及中间过程的结果的合法性。那么,机器产生的代码采用异常去限制输入和中间运算过程是个思路。异常产生后,反馈到上游代码,上游代码做一系列的调整,直到最上游,这样能纠偏。因为是机器编程,程序的复杂度以及可读性往往不需要顾虑,但是效率比较关键。异常处理可能会导致性能的下降,但需要权衡。
异常还可以用来统计程序执行的健康情况或者触发警报。这发生于对于异常不导致程序终止的时候。这也是一个应用场景。
从哲学的角度讲,这相当于对于人犯错的处理,基于错误的严重性。道德层面还是法律层面,基于对于错误本身的本质的认识。任何东西都是有时间和空间局限。错误的认定也是。好的程序框架应该有时间延续性,做到尽量中性,不偏不倚。
在机器自动编程或者机器自动调用的时候,exception是有用的,因为,万一机器在调用某个程序发生调用错误或者其他错误的时候,需要预防机器崩溃。根据帖子 https://blog.csdn.net/linux_Allen/article/details/80154069
我们可知,expception有以下类型:
Exception,接口类
ArithmeticException类, 计算异常
NullPointerException类,空指针异常
IndexOutOfBoundsException类,越界异常
NoEnoughtMemoryException,内存不足异常
InvalidParameterException,参数错误异常
在机器自主编程或调用的时候未必够用,但不得不用。