Java 异常基础概念与处理机制
异常的基本概念
什么是异常 程序执行中发生的不正常情况就叫异常。例如除以 0 的计算就是异常。
异常机制有什么用
出现异常的时候将不正常反馈打印出来,方便程序员对异常进行修改处理。出现的反馈信息叫异常信息,由 JVM 打印。
Java 语言中异常以什么形式存在
异常在 Java 中以类的形式存在,每一个异常类都能创建异常对象。
异常的继承结构
Object 类下包含 Throwable 类。 Throwable 下有 Error(不可处理直接退出 JVM)和 Exception(可处理)两个分支。 Exception 下有 Exception 的直接子类(编译时异常)和 RuntimeException(运行时异常)两个分支。
编译时异常和运行时异常
编译时异常和运行时异常都在运行阶段发生,编译阶段不会发生异常,因为只有程序运行时才会 new 对象,异常的发生就是在 new 异常对象。 为什么叫编译时异常? 因为编译时异常必须在编写阶段进行处理,不处理编译器会报错。一般发生的都是编译时异常。 处理编译时异常就像是你觉得要下雨带了一把伞,概率高需要被预处理。 而运行时异常的处理就像是你在路上可能会被鸟屎砸到带了一把伞,概率低,所以一般没必要进行预处理。
Java 语言对异常处理的两种方式
- 在方法声明的位置使用 throws 关键字,抛给上一级,谁调用就抛给谁。
- 使用 try catch 语句进行异常的捕捉。 选择上抛时,抛给了调用者,调用者要处理这个异常,调用者同样有两种处理方式。 注意: 当异常一直被往上抛时,最后被抛给 main 方法,最终又被抛给 JVM,结果就是程序被终止。 throws 后可以写多个异常,用逗号隔开,抛出的异常类必须是它本身或者他的父类。 一般 main 方法中的异常就不要继续上抛了,最好用 try catch 捕捉。
try catch 语法示例
try {
// 出现异常的代码块
} catch (异常类名 变量名) {
// 捕捉到该分支的异常后对异常的处理
}
catch 可以多个,从上到下,从小到大。catch 中的类名也是确切的异常类或其父类。
try catch 中的代码执行顺序
只要异常没被捕捉,采用上抛的方式,此方法的后续代码不执行。 try 中的某一行出现异常则该行后面的代码不会执行。 try catch 捕捉后后续代码可以被执行。


