一、异常的分类:
所有的异常类都是属于Throwable类的子类。其主要分为两大类派,Exception类和Error类。Error类是十分严重的错误如Java运行系统中的内部错误及Java虚拟机资源耗尽等,我们无法解决。而Exception类又衍生出两个子类RuntimeException(运行时异常/非检测异常)类以及CheckedException(检测异常)类。
CheckedException(检测异常)在代码编译的过程中,编译器要求你对可能出现的异常必须做出相应的处理的异常。如IOException、SQLException等以及用户自定义的Exception异常。
UncheckedException(非检测异常)是在程序运行过程中抛出的异常,如果不对其进行处理的话整个程序就会突然中止,这是在编译过程中无法被编译器检测到的。如:NullPointerException,IndexOutOfBoundsException(数组下标越界)等。
二、异常处理:
CheckedException:
1.使用 try...catch 结构捕获并处理。
2.定义方法时 使用 throws 关键字声明抛出异常,使异常在方法调用时再寻求处理。
UncheckedException:
1.使用 try...catch 结构捕获并处理,使程序继续执行。
2.定义方法时 使用 throws 关键字声明抛出异常,使异常在方法调用时被处理。
3.不处理。
案例:
在jdbc实现事务管理时中,为实现事务管理的原子性(SQL执行同时成功或失败)将事务try...catch...
确保当非检测异常发生时能够实现 catch 中的事务回滚 connection.rollback();
三.自定义异常:
1.创建自定义异常类;
public class MyException extends Exception{ //继承Exception类
public MyException(String ErrMsg){ //构造方法
super(ErrorMsg); //调用父类的构造方法。
}
}
2.在方法中声明抛出异常;
3.调用方法时 try...catch...捕获并处理异常。
四、总结:
遇到异常 检测异常 时要么就直接 try...catch...捕捉处理,要么throws 将异常向上抛出,待方法调用者进行处理。