Java中一共定义了两类异常:检查性异常(Checked Exception)和非检查性异常(Unchecked Exception)。下面分别详细介绍这两种异常。
一、检查性异常
检查性异常又被称为编译时异常(Checked Exception),这种异常必须在程序中进行处理,否则编译器会显示错误信息。常见的检查性异常有:
- IOException:在读写操作中出现的异常,比如文件找不到、文件已经被占用等等。
示例代码:
try {
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println("读取文件时出现了异常:" + e.getMessage());
}
- ClassNotFoundException:在使用Java反射机制时,如果找不到指定的类,就会抛出这个异常。
示例代码:
try {
// 根据类名动态加载类,如果失败则抛出ClassNotFoundException
Class<?> clazz = Class.forName("com.example.MyClass");
} catch (ClassNotFoundException e) {
System.out.println("未找到指定类:" + e.getMessage());
}
二、非检查性异常
非检查性异常又被称为运行时异常(Unchecked Exception),这种异常不需要在程序中进行处理,但如果不处理,它们会导致程序终止执行。常见的非检查性异常有:
- NullPointerException:当试图访问一个空引用时,就会抛出这个异常。
示例代码:
String str = null;
if (str.equals("hello")) { // 这里会抛出NullPointerException
System.out.println("相等");
}
- ArithmeticException:当出现除以零等算数错误时,就会抛出这个异常。
示例代码:
int x = 10;
int y = 0;
int z = x / y; // 这里会抛出ArithmeticException