error和exception有什么区别?
- error是由Java虚拟机生成并抛出,大部分时间与编写的程序无关
- exception是程序可以处理的,可以避免发生的
throw 与 throws 的区别是什么?
throw 使用的位置在方法中,后面跟的异常对象实例,表示抛出异常
throws 使用的位置在方法参数小括号后面,后面跟的是一个或者多个异常类名且用逗号隔开,表示抛出异常并交给调用者去处理
final, finally, finalize的区别?
- final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。
- finally是异常处理语句结构的一部分,表示总是执行。
- finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等(在垃圾回收的时候会调用被回收对象的此方法)
什么是异常链?
异常链是指在进行一个异常处理时抛出了另外一个异常,由此产生了一个异常链条,一个异常而决定抛出另一个新的异常时一定要包含原有的异常,这样处理程序才可以通过 getCause() 和 initCause() 方法来访问异常最终的根源
try-catch-finally-return执行顺序?
- 不管是否有异常产生,finally块中代码都会执行
- 当try和catch中有return语句时,finally块仍然会执行
- finally是在return后面的表达式运算执行的,所以函数返回值在finally执行前确定的,无论finally中的代码怎么样,返回的值都不会改变,仍然是之前return语句中保存的值