异常机制的引入完善了Java语言的设计。
在理想状态下,用户输入永远正确,程序逻辑永远不出错,外部设备永远工作正常,所有的处理都是按照正确的路线运行,这样的程序确实不需要异常处理,但是现实世界中的程序充满了不良数据和问题代码,会时不时的报出错误,这个时候,语言的异常处理机制就可以派上用场了。
一、异常设计的初衷
异常是用在方法设计上的,是在方法执行过程中出现预期之外的结果时产生,这个界限难以清晰的界定,所以大家在使用异常的时候才会产生疑惑。总体来说,就是在可能出现一些不可控的错误且不能继续执行时,就可以以抛出异常的方式来处理。对于应用开发者来说,设计一个函数抛出异常的原因是因为调用了抛出异常的函数,不得不抛出来,第二个原因就是本身逻辑出现了无法忽略错误,须交给上游处理。一些可以通过检查的异常,就不要去try catch了,比如NullPointerException,比如这类代码是要禁止的;try { obj.method(); } catch (NullPointerException e) {…}
二、异常用作流程控制
try{...} catch(NullPointerException e){ fun(); }
也就是说,不要在catch中做业务逻辑运算,因为异常是用来解决程序中不可控的意外情况,而不是给你做条件分支的,同时,异常的处理效率比条件判断方式要慢很多。实际这么使用的的情况还是比较少。
三、