一、Java异常分成俩类:
1. 检查型异常(Checked Exception):编译器强制要求程序员进⾏捕获处理的异常,如 IOException 、 SQLException 等。
2. ⾮检查型异常(Unchecked Exception):编译器不要求强制捕获的异常,如 RuntimeException 及其⼦类。
可查异常,⾮运⾏时异常(编译时异常或已检查异常,必须要在⽅法⾥⾯捕获或者抛出)
是那些编译器会检查是否已经被处理的异常。
如果编写了⼀个可能会抛出⾮运⾏时异常的⽅法,必须在⽅法签名中使⽤ throws 关键字来声明这个⽅ 法会抛出这些异常。
调⽤这个⽅法的代码也必须处理这些异常,或者使⽤ throws 关键字再次声明这些⽅法也可能会抛出这 些异常。
常⻅的⾮运⾏时异常包括:
ClassNoFoundException 应⽤程序试图加载类,找不到对应的类
IllegalAccessException 拒绝访问⼀个类的时候
NoSuchFieldExcetion 请求的变量不存在
NoSuchMethodException ⽅法不存在
IOException :当发⽣输⼊/输出错误时抛出。
SQLException :当使⽤JDBC(Java Database Connectivity)与数据库交互时,发⽣SQL错误或数 据库访问错误时抛出。
不可查异常,运⾏时异常(RuntimeException⼦类)
是那些可能在Java虚拟机正常运⾏期间抛出的异常,但是编译器不会检查这类异常是否被处理
如果编写了⼀个可能会抛出运⾏时异常的⽅法,不需要在⽅法签名中使⽤ throws 关键字来声明这个⽅ 法会抛出这些异常
常⻅的运⾏时异常包括:
NullPointerException :当应⽤程序试图在需要对象的地⽅使⽤ null 时抛出。
ClassCastException 强制失败抛出异常
ArrayIndexOutOfBoundsException :当应⽤程序试图访问数组的⾮法索引时抛出。
ArithmeticException :当出现异常的算术运算条件时抛出,例如除以零。
二、异常处理机制
Java提供了五个关键字来处理异常: try 、 catch 、 finally 、 throw 和 throws 。
try:包含可能出现异常的代码块。
catch:⽤于捕获try块中抛出的异常,并处理它。
finally:⽆论try块中的代码是否抛出异常,finally块中的代码都会被执⾏。它常⽤于关闭资源或进 ⾏清理⼯作。