115题Java面试问题和答案之异常处理

已有 3342人阅读此文 - - JAVA

43. Java中两种异常是哪两种?它们之间的区别是什么? Java有两种类型的异常:检查异常和(checked exceptions)和非检查异常(unchecked exceptions)。非检查异常如果有可能被方法或构造器抛出,并不需要再方法中或构造器中声明,而且向方法和构造器的上层传播。而检查异常必须在方法或构造器的throws子句中声明。

44. Java中的Exception和Error有什么区别? Exception和Error类都是Throwable 类的子类。Exception 类用在异常情况下,需要用户的程序进行捕获。Error 类定义的异常不需要被用户程序捕获。

45. Throw和throws有什么区别? throw关键字用于显式的抛出一个异常。相反,throws子句用于表示那些需要被方法处理的异常。每一个方法都必须显式的指定哪些异常没有被处理,以便方法的调用者可以对可能的异常做出保护措施。最后,多个异常用逗号分隔。

45. 异常处理中的finally块有什么重要作用? finally块总是会被执行,无论异常是否会被捕获。即使在catch语句不存在而且异常被抛出的的情况下,finally块也仍然会被执行。最后值得提的是,finally块常用来释放资源,比如I/O buffer,数据库连接等。

46. 异常处理后Exception对象会发生什么?Exception 会在下次垃圾回收时被回收掉。

47. Finally块和finalize方法有什么区别?finally块无论异常是否抛出都会被执行,用来释放被程序占用的资源。Finalize是Object类的一个保护性的方法,在对象即将被垃圾回收前,被Java虚拟机调用。


期待你一针见血的评论,Come on!