异常发生的原因有很多:
- 用户输入了非法数据
- 要打开的文件不存在
- 网络通信时连接中断,或者JVM内存溢出
有三种类型的异常:
- 检查性异常:最具代表性的异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
- 运行时异常:是可以避免的异常,在编译时被忽略。
- 错误:错误不是异常,而是脱离程序员控制的问题,错误在代码中通常被忽略。例如,当栈溢出是,一个错误就发生了,他们在编译时是检查不到的。
Exception类的层次
所有异常是从java.lang.Exception类继承的子类。
Exception类是Throwable类的子类。除了Exception类外,Throwable还有一个子类Error。
Java内置异常类
异常方法
捕获异常
多重捕获异常
throws/throw关键字
finally关键字
声明自定义异常
通用异常
- JVM(Java虚拟机)异常:由JVM抛出的异常或错误。例如:NullPointerException类,ArrayIndexOutOfBoundsException类,ClassCastException类。
- 程序级异常:由程序或者API程序抛出的异常。例如IllegalArgumentException类,IllegalStateException类。