java-7.异常
1.throw和throws的区别?
throws是用来声明一个方法可能抛出的所有异常信息,将异常声明但是不处理,而是将异常往上传,谁调用就交给谁。
而throw则是指抛出的一个具体的异常类型。
2.final,finally,finalize有什么区别?
final可以修饰类,变量,方法,修饰类表示该类不能被继承,修饰方法表示该方法不能被重写,修饰变量表示该变量不能重新赋值。
finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码放在finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用System的gc()方法的时候,由垃圾回收器调用finalize()回收垃圾。
3.try-catch-finally中,如果catch中return了,finally还会执行吗?
会执行,在return前执行。
4.常见的异常有哪些?
ArithmeticException异常:试图除以0
NullPointerException异常:空指针异常
ClassCastException异常:强制转型异常
ArrayIndexOutOfBoundsException异常:数组越界异常
NumberFormatException异常
自定义异常:
当继承的是RuntimeException时,可以直接抛,即写为throw new IllegalAgeException("年龄不能为负数");
当继承的是Exception时,不可以直接抛,因为时编译器异常,而不是运行期异常。
附:catch块判断异常时,子类异常在父类异常的前面。
使用throws抛出异常时,层层外抛,最后由最高层处理。
5.try-catch-finally中哪个部分可以省略?
catch可以省略
try只适合处理运行时异常,try+catch适合处理运行时异常+普通异常。
普通异常如果选择捕获,则必须用catch显示声明以便进一步处理。
而运行时异常在编译时没有如此规定,所以catch可以省略,加上catch编译器也觉得无可厚非。
本文来自博客园,作者:jsqup,转载请注明原文链接:https://www.cnblogs.com/jsqup/p/15887870.html