我看别人的面经中有一道题目就问到了Exception,即java的异常处理的,我以前也学了java的异常处理,但是我查了下,看了别人的博客关于写的exception异常处理,我发现,自己学的不牢固,只学到了一点皮毛而已,在看了那么多博客和资料后,我做下总结吧,不然我大脑都混乱了。
java的中异常祖先是Throwable,Throwable的直接子类是Exception和Error。
Error通过单词我们就知道,是错误的意思,这种错误一般是jvm运行产生的错误,出现这种错误,我们的程序不能解决,比如内存溢出oom,堆溢出等。这种错误,我们不必处理,直接让jvm抛出报错,我们没办法解决就不管了。
Exception中文意思是异常,那么Exception又分为检查性异常和非检查性异常。比如RuntimeException类及子类就是非检查性异处,表示运行时出现的异常,有数组越界,空指针异常,我们也可以不进行处理,让jvm自己抛出异常,当然如果我们可以预见这种异常的话,最好在程序中进行判断检查,程序写健壮些,有的这种异常就可以避免了。effect java有这种处理的推荐,具体的可以看看这本书。
Exception还有一类是检查性异常,这是除RuntimeException类及子类外的Exception类和Exception类的其他子类。检查性异常,必须要进行异常处理的或者抛出,否则编译器会报错。
下面这是我自己总结和测试出来,很方便解决出现的各种异常,代码如下:
父类异常:
子类异常: