简述异常处理的两种方式 并说明它们的区别
1、首先,我们先看一下throws和throw关键字:
(1)throws关键字什么时候用?
答:当方法中可能会出现异常,使用throws抛出异常,抛给上一级调用者。
(2)throw也是一个关键字,用在方法内部,手动抛出一个实例化的异常类,保存了异常信息,方法声明处再用throws抛给上一级调用者。
(3)throws可以上抛多个异常,异常直接使用逗号隔开。
如果throws抛出的异常属于编译时异常,那么在调用的时候就必须对其进行预先处理。
编译时异常,不预先处理,编译器不让通过。
2、处理异常的两种方式:
继续上抛:相当于推卸责任,把异常传递给调用者。
自己捕捉:捕捉相当于自己拦下异常,把异常给解决了,调用者是不知道的。
(1)那在以后开发中,处理编译时异常,应该上报还是自己捕捉,怎么选?
答:只有一个标准:如果希望调用者处理异常,选择throws上报异常。不希望调用者处理异常,选择try…catch捕捉。
(2)比如有一个类,它的构造方法可能出现异常,那这个类是上报异常,还是自己捕捉异常?
肯定是上报异常,因为构造方法是上级调用的,在new对象时调用的,如果出现异常,new对象失败却不让调用者知道,程序会出问题的。