异常
下边是我自己整理的面试题,基本已经很全面了,想要的可以私信我,我会不定期去更新思维导图
哪里不会点哪里
1.说一下Java中的异常体系?
2.Error和Exception的区别
- Error:系统错误,编译时出现的错误,
- Exception:程序可以处理的异常,可以捕获且可能回复
3.写出你最常见的 5 个 RuntimeException?
- NullPointerException 空指针
- ClassNotFoundException 找不到指定的类
- NumberFormatException 字符串转换数字异常
- IndexOutOfBoundsException 数组下标越界
- ClassCastException 数据类型转化异常
4.如何处理异常?
- 知道自己如何处理的异常自己捕获处理
- 不知道如何处理的异常向上抛,交给调用者处理
5.try()里面有⼀个return语句, 那么后面的finally{}里面的代码会不会被执行?什么时候执行,return前还是return后?
- 会执行
- 在return之前执行
- finall对执行结果不会改变
6.throw 和 throws 的区别?
- throw
在方法体内,表示抛出异常,由方法体内的语句处理
抛出的是一个实例 - throws
用在方法声明后面,抛出异常,由调用者处理
表示出现异常的一种可能性,并一定发生
7.请说明Exception和 RuntimeException的区别和关系
Excetion是 RuntimeException的父类
Exception类型的异常需要强制进行处理,如果不处理编译无法通过
RuntimeException类型异常叫做运行时异常不需要强制处理
8.Java中的检查型异常和非检查型异常有什么区别
- 处理方式不同
检查型异常需要使用try, catch和finally关键字在编译期进行处理,否则编译器会报错
非检查型异常则不需要这样做 - 继承类不同
所有继承自java.lang.Exception类的异常都是检查型异常
所有继承自RuntimeException的异常都被称为非检查型异常