异常的分类(对 java 中运行时异常和编译时异常的理解)
- 一、异常的分类
- 二、发生错误和异常的代码实例
一、异常的分类
-
运行时异常
- 别称:也称非受检异常、unchecked 异常
- 定义:指在程序运行时产生的异常
- 说明:这种异常即使不编写异常处理代码,依旧可以通过编译,但随着程序代码的执行,可能会引发异常的产生
- 产生:运行时异常一般由程序中的逻辑错误引起的
- 解释
- 运行时异常在程序运行时由 java 虚拟机自动进行捕获处理
- java 编译器不会对此类异常进行检查
- 也就是说,当程序中出现此类异常时,即使没有使用 try…catch 语句捕获异常或者使用 throws 关键字声明抛出异常,程序也能编译通过,只是程序在运行过程中可能报错
- java 中的运行时异常类:RuntimeException 类及其子类都是运行时异常类
-
编译时异常
- 别称:也称受检异常、checked 异常
- 定义:指在程序编译时产生的异常
- 说明:这种异常必须进行处理,否则程序无法正常运行
- 解释:java 编译器会对此类异常进行检查,如果出现此类异常,则必须自己手动对这类异常进行处理,否则程序无法通过编译
- 处理(两种处理方式)
- 使用 try…catch 语句对异常进行捕获处理
- 使用 throws 关键字声明抛出异常,由调用者对异常进行处理
- java 中的编译时异常类:除了 RuntimeException 类及其子类以外的,其他 Exception 类的子类
二、发生错误和异常的代码实例
- 发生了错误的代码
public class Test01 {public static void main(String[] args) {method01();}private static void method01() {method01();}
}
- 发生了运行时异常的代码
public class Test02 {public static void main(String[] args) {int[] a =new int[5];System.out.println(a[10]);}
}
- 发生了编译时异常的代码
public class Test03 {public static void main(String[] args) {System.out.println(20/0);}
}
- 运行时异常和编译时异常的区别之一