Java中有哪些类型的异常?

  • Post category:Java

Java中一共定义了两类异常:检查性异常(Checked Exception)和非检查性异常(Unchecked Exception)。下面分别详细介绍这两种异常。

一、检查性异常

检查性异常又被称为编译时异常(Checked Exception),这种异常必须在程序中进行处理,否则编译器会显示错误信息。常见的检查性异常有:

  1. 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());
}
  1. ClassNotFoundException:在使用Java反射机制时,如果找不到指定的类,就会抛出这个异常。

示例代码:

try {
    // 根据类名动态加载类,如果失败则抛出ClassNotFoundException
    Class<?> clazz = Class.forName("com.example.MyClass");
} catch (ClassNotFoundException e) {
    System.out.println("未找到指定类:" + e.getMessage());
}

二、非检查性异常

非检查性异常又被称为运行时异常(Unchecked Exception),这种异常不需要在程序中进行处理,但如果不处理,它们会导致程序终止执行。常见的非检查性异常有:

  1. NullPointerException:当试图访问一个空引用时,就会抛出这个异常。

示例代码:

String str = null;
if (str.equals("hello")) { // 这里会抛出NullPointerException
    System.out.println("相等");
}
  1. ArithmeticException:当出现除以零等算数错误时,就会抛出这个异常。

示例代码:

int x = 10;
int y = 0;
int z = x / y; // 这里会抛出ArithmeticException