Java基础–异常(exception)
简单理解:
执行过程中异常可分两类:
1)error(错误):java虚拟机无法解决的严重问题。如:jvm系统内部错误,资源耗尽等。
2)exception :其他因编程错误或者偶然的外在因素导致的一般性问题,可以通过针对性代码进行处理。例如空指针访问,读取不存在的文件等。
exception又分两类:运行时异常[]和编译时异常[]
异常体系图
常见异常:
注:Throwable类还实现了Serializable接口和继承object类
常见异常:
常见的运行时异常包括 :
- NullPointerException 空指针异常
- ArithmeticException 数学运算异常
- ArrayIndexOutOfBoundsException 数组下标越界异常
- ClassCastException 类型转换异常
- NumberFormatException 数字格式不正确异常[]
常见编译异常列举:
编译异常指在编译期间,就强制要求处理的异常,负责代码不能正常编译。
1.SQLException 操作数据库,查询表时发生的异常
2.IOException 操作文件,发生的异常。
3.FileNotFoundException 程序操作读取一个不存在的文件,就报异常
3.ClassNotFoundException 加载类时,该类却不存在,报异常
4.EOFException 操作文件,到文件末尾,发生异常
5.IllegalAragumentException 参数异常
*异常处理机制:
处理机制示意图:
自定义异常处理:
public class CustomException {
public static void main(String[] args) {
int age = 180;
if (!(age >= 18 && age <= 120)) {
throw new AgeException("cw");
}
}}
class AgeException extends RuntimeException {
public AgeException(String message) {
//构造器
super(message);}
}
运行结果:分析:
1)自定义 的异常处理类通常继承Exception或者RuntimeException
2)如果继承exception,就属于编译异常;
3)继承RuntimeException,属于运行异常
注:如果自定义的异常处理类继承的是exception,这时候main方法又需要抛出异常,这样就不方便,所有一般直接继承RuntimeException
源码追踪:
自定义的异常处理类中构造器的super–》继承RuntiemException类中的
public RuntimeException(String message) { super(message); }
构造器–》
继承Exception类中的
public Exception(String message) { super(message); }
构造器
–》继承Throwable中的public Throwable(String message) { fillInStackTrace(); detailMessage = message; }
构造器,将message传入并显示。