Java面试题之Java 的异常处理
1. Java中异常分为哪些种类
(1) 编译时异常,也叫强制性异常,和CheckedException
(2)运行时异常,也叫没强制性异常和RuntimeException
2.error和exception的区别?
error一般是指在虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等,这类错误导致应用程序中断,程序自身是无法恢复的,这时候,我们一般建议终止程序
Exception类表示程序可以处理的异常,可以捕获且可能恢复,遇到这类异常,应该尽可能的处理异常,,是程序恢复运行,而不是随意终止程序
3.请写出你最常见的几个RuntimeException
1.java.lang.NullPointerException 空指针异常
2.java.lang.ClassNotFoundException 找不到指定的类
3.java.lang.NumberFormatException 字符串转换为数字异常
4.java.lang.IndexOutOfBoundsException 数组角标越界异常
5.java.lang.ClassCastException 数据类型转换异常
6.SQLException SQL异常
7.java.lang.IllegalArgumentException 方法传递参数错误
4.throw和throws的区别
throw 语句用在方法体内,表示抛出异常,它抛出的是异常实例,所以执行throw一定抛出异常
throws:用在方法声明后,如果有异常进行抛出,没有异常不处理,抛出的是某种类型的异常
5.final、finally、finalize的区别?
final:是用来,声明属性,方法和类,分别表示,属性不可变,类不可继承,方法不能覆盖
finally:异常处理语句结构的一部分,表示总能执行
finalize:Object类的一个方法,用来垃圾回收的(这里 我是这么理解的)