1、throws和throw的区别:
throws:
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常
throw:
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常
2、处理异常的原则;
功能内部可以处理、或者后续需要继续执行,就用try,否则就throws抛出。
3、finally的特点:
finally语句体内的代码一定执行
特殊情况,执行到finally之情,jvm退出了则不执行
4、finally的作用:
用于释放资源
5、finally相关面试题:
①、final和finally、finalize的区别?
final:方法、类、变量的修饰符
修饰类,类不能被继承
修饰方法,方法不能被重写
修饰变量,变量是常量
finally:异常处理的一部分,用于释放资源
finalize:Object类的一个方法,用于垃圾回收
②、如果catch里面有return语句,请问finally的代码还会执行吗?
会执行,在return之前
6、异常注意事项:
子类重写父类方法时,子类的方法必须抛出和父类相同的异常或者父类异常的子类
如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或它的子集,子类不能抛出父类没有的异常
如果被重写的方法没有异常抛出,那么子类的方法不可以抛出异常,如果子类方法内有异常,只能try,不能throws