一、Java 中,处理异常的两大步是?
答
捕获异常
声明异常
二、如果 catch 两个异常,一个是父类,一个是子类。这两个异常的 catch 顺序如何确定?
答
子类异常在前父类异常在后
三、finally· 里面一般放置什么代码?
答
无论是否发生异常,都必须要执行的语句放到 finally 中的语句
四、Error 和 Exception 的区别和联系?
答
联系:Error 与 Exception 都继承自 Throwable 类
区别:
Exception:
[1]可以是可被控制(checked)或不可控制的(unchecked)
[2]表示一个由程序员导致的错误
[3]应该在应用程序级被处理
Error:
[1]总是不可控制的(unchecked)
[2]经常用来用于表示系统错误或低层资源的错误
[3]如果可能的话,应该在系统级被捕捉
五、Throwable 是一个类还是接口?
答
Throwable 是一个类
六、方法重写时,子类声明异常能否超出父类的范围?
答
子类声明异常不能超出父类的范围
[1]父类没有声明异常,子类也不能
[2]不可抛出原有方法抛出异常类的父类或上层类
七、Java中的两种异常类型是什么?他们有什么区别?
答
Java中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。
1、不受检查的异常
不需要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异常,并且不受检查的异常可以传播到方法或者是构造函数的外面。
2、受检查的异常
必须要用throws语句在方法或者是构造函数上声明。
八、throw和throws有什么区别?
答
1、throw关键字用来在程序中明确的抛出异常
2、throws语句用来表明方法不能处理的异常
3、每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可能发生的异常,多个异常是用逗号分隔的
九、异常处理完成以后,Exception对象会发生什么变化?
答
Exception对象会在下一个垃圾回收过程中被回收掉。
十、finally代码块和finalize()方法有什么区别?
答
1、无论是否抛出异常,finally代码块都会执行,它主要是用来释放应用占用的资源
2、finalize()方法是Object类的一个protected方法,它是在对象被垃圾回收之前由Java虚拟机来调用的。