2019年Java面试题(二) 异常 2019-04-27

1.  运行时异常与一般异常有何异同?

异常表示程序运行过程中可能出现的非正常状态

运行时异常:表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。

编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须抛出未被捕获的运行时异常


2.  JavaExceptionError有什么区别?

Exception和Error都是Throwable的子类。Exception用于用户程序可以捕

获的异常情况。Error定义了不期望被用户程序捕获的异常。


3.  throwthrows有什么区别?

throw关键字用来在程序中明确的抛出异常,相反,throws语句用来表明方法不能处理的异常。每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可能发生的异常,多个异常是用逗号分隔的。

 

4.  finally代码块和finalize()方法有什么区别?

无论是否抛出异常,finally代码块都会执行,它主要是用来释放应用占用的资源。finalize()方法是Object类的一个protected方法,它是在对象被垃圾回收之前由Java虚拟机来调用的。