java异常的层次图
image.png
从图中我们可以看出,Error和Exception都是Throwable的子类
Error一般指在java虚拟机中发生的,不需要程序猿try-catch或者抛出
受检异常(checked exception):在编译时需要检查的异常,需要用try-catch或throws处理。在java中主要指除了Error和RuntimeException之外的异常
非受检异常(unchecked exception):不需要在编译时处理的异常。在java中派生于Error和RuntimeException的异常都是unchecked exception,其他都是checked exception
Java中Exception和Error的区别:
Exception和Error都是Throwable的子类。Exception用于用户程序可以捕获的异常情况。Error定义了不期望被用户程序捕获的异常。
throw和throws有什么区别:
throw关键字用来在程序中明确的抛出异常,相反,throws语句用来表明方法不能处理的异常。每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可能发生的异常,多个异常是用逗号分隔的。
异常处理的时候,finally代码块的重要性是什么?
无论是否抛出异常,finally代码块总是会被执行。就算是没有catch语句同时又抛出异常的情况下,finally代码块仍然会被执行。finally代码块主要用来释放资源,比如:I/O缓冲区,数据库连接。
异常处理完成以后,Exception对象会发生什么变化?
Exception对象会在下一个垃圾回收过程中被回收掉。
finally代码块和finalize()方法有什么区别?
无论是否抛出异常,finally代码块都会执行,它主要是用来释放应用占用的资源。finalize()方法是Object类的一个protected方法,它是在对象被垃圾回收之前由Java虚拟机来调用的。
网友评论