在Java中,异常分为两种主要类型:已检查异常(Checked Exception)和未检查异常(Unchecked Exception)(也称为运行时异常)。
已检查异常(Checked Exception):
- 已检查异常是指在编译时就需要程序员处理的异常。它们通常表示程序可能遇到的外部情况,例如文件不存在、网络连接中断等。Java 编译器要求在可能抛出这些异常的方法中使用
throws
关键字声明,或者在方法内使用try-catch
块捕获这些异常。 - 例子:
IOException
、FileNotFoundException
。
import java.io.FileReader; import java.io.IOException; public class CheckedExceptionExample { public static void main(String[] args) { try { FileReader fileReader = new FileReader("file.txt"); // 读取文件内容 } catch (IOException e) { e.printStackTrace(); } } }
- 已检查异常是指在编译时就需要程序员处理的异常。它们通常表示程序可能遇到的外部情况,例如文件不存在、网络连接中断等。Java 编译器要求在可能抛出这些异常的方法中使用
未检查异常(Unchecked Exception):
- 未检查异常是指在编译时不强制要求处理的异常。通常是程序运行时出现的错误,如空指针异常、除零异常等。这些异常是
RuntimeException
类及其子类的实例。 - 例子:
NullPointerException
、ArithmeticException
。
public class UncheckedExceptionExample { public static void main(String[] args) { // 以下代码会引发 ArithmeticException int result = 10 / 0; } }
- 未检查异常是指在编译时不强制要求处理的异常。通常是程序运行时出现的错误,如空指针异常、除零异常等。这些异常是
处理未检查异常是可选的,但程序员仍然可以使用 try-catch
块来捕获并处理这些异常,以防止程序在出现异常时崩溃。然而,对于已检查异常,编译器会强制要求程序员在编码时进行处理,否则会导致编译错误。