Java面试笔记:结合面试问题梳理Java异常体系

本文详细梳理了Java异常体系,包括Throwable的Error和Exception两大类,以及受检异常和非受检异常的区别。同时,讨论了异常处理机制,如Error和Exception的处理方式,强调了检查型异常和非检查型异常的处理要求。文章还列举了一些常见的Java异常类型,并解答了面试中可能出现的相关问题,如final、finally和finalize的区别。
摘要由CSDN通过智能技术生成

Java 中的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行程序的正常指令流。为了能够及时有效地处理程序中的运行错误,必须使用异常类。
Java的异常是一个面试高频问题,而且在学习Java的时候也是一个基础而且重要的问题。这篇文章我结合着面试问题对Java的异常体系进行一个梳理,希望对大家面试会有帮助。
1、体系梳理
Throwable可以用来表示任何可以作为异常抛出的类,分为两种:Error和Exception。其中Error用来表示JVM无法处理的错误,Exception又分为两种:
(1)受检异常:需要用try…catch… 语句捕获并进行处理,并且可以从异常中恢复;
(2)非受检异常:是程序运行时错误,例如空指针异常。
在这里插入图片描述
2、异常处理
对于不同的异常,Java采用不同的异常处理方式:
(1)Error(错误):一般表示代码运行时JVM出现问题。比如NoClassDefFoundError等。比如说当jvm耗完可用内存时,将出现OutOfMemoryError。此类错误发生时,JVM将终止线程。
(2)运行异常将由系统自动抛出,应用本身可以选择处理或者忽略该异常。
(3)可查异常必须进行捕获或者抛出该方法之外交给上层处理。要么使用try-catch捕获,要么throws该异常。
3、面试题
(1)检查型异常和非检查型异常有什么区别
检查型异常和非检查型异常的主要区别在于其处理方式。检查型异常都需要使用try,catch 和finally 关键字在编译器进行处理,否则会出现编译器报错。对于非检查型异常则不需要这样做。Java中所有继承 Exception 的类的异常都是检查型异常,所有继承RuntimeException 的异常都被称为非检查型异常。
(2)error和exception有什么区别
这里主要是对概念的理解。error表示恢复不是不可能但很困难的情况下的一种严重问题。exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
(3)final, finally, finalize的区别?
final是一个Java关键字,用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。这个是在笔试当中常考的一个知识点。finally是异常处理语句结构的一部分,表示finally里面的代码块一定会执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。
(4)常见的异常
NullPointException:空指针异常,Jdk8里面可以用Optional对象来避免。
IndexOutOfBoundsException:数组下标越界。
NumberFormatException:数字类型转化异常。
ClassCastException:类型转换异常,发生在强转时。
FileNotFoundException:找不到指定文件。
ClassNotFoundException:在classpath中找不到引用的类缺乏引用当前类的jar或没有设置classpath或jar损坏-,找到jar并放入classpath中或检查jar是否损坏
OutOfMemoryError:内存溢出异常,增大初始化堆:-Xms 增加最大值:-Xmx
NoClassDefFoundError:找不到相应的类错误,缺乏当前引用类的jar或jar版本不对。ConcurrentModificationException:并发修改异常。
NoSuchMethodError:类里找不到相应的方法,一般是jar版本不对。
UnsupportedClassVersionError:版本不支持错误。
StackOverflowError:栈溢出错误,一般是函数的死循环。
以上就是我整理的Java的异常相关知识点。希望以上的分享可以帮助到面试的小伙伴们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值