目录
在Java中,异常和错误都继承自java.lang.Throwable类,这是Java异常处理机制的基础类。Throwable类有两个主要的子类:Exception(异常)和Error(错误)。

-
Error(错误):
- 错误一般表示应用程序无法恢复的严重问题,如硬件故障、内存不足、虚拟机错误等。这类错误通常不应由应用程序捕获或试图处理,因为它们超出了程序的控制范围。常见的Error子类包括:
-
VirtualMachineError(虚拟机错误):如OutOfMemoryError(内存溢出)、StackOverflowError(堆栈溢出)。 -
ThreadDeath:线程终结。 -
LinkageError:类定义相关的问题,如ClassNotFoundException(找不到类定义)。

-
- 错误一般表示应用程序无法恢复的严重问题,如硬件故障、内存不足、虚拟机错误等。这类错误通常不应由应用程序捕获或试图处理,因为它们超出了程序的控制范围。常见的Error子类包括:
-
Exception(异常):
- 异常表示程序运行时可能遇到的问题,可以根据是否需要在编译时检查分为两大类:
2.1 Checked Exception(检查异常,也称受检异常):
- 这类异常在编译时必须被显式处理,要么通过try-catch块捕获,要么通过方法签名中的
throws关键字声明抛出。常见的检查异常包括:IOException:输入输出异常。SQLException:数据库访问异常。ClassNotFoundException:类未找到异常。
2.2 Unchecked Exception(非检查异常,也称运行时异常):
- 这类异常在编译时不需要显示处理,它们通常表示编程错误或在运行时才可能出现的不可预料的条件。常见的运行时异常包括:
NullPointerException:空指针异常。ArrayIndexOutOfBoundsException:数组越界异常。IllegalArgumentException:非法参数异常。ClassCastException:类型转换异常。NumberFormatException:数字格式异常。ArithmeticException:算术异常,如除以零。

-
用户自定义异常:
- 开发者可以根据需要自定义异常类,通常继承自
Exception或其子类。自定义异常可以提供更具体的错误信息,便于调试和理解程序中的问题。
- 开发者可以根据需要自定义异常类,通常继承自
//定义一个自定义异常类,继承自现有的异常类,比如 Exception 或某个特定的已存在异常类。
public class CustomException extends Exception {
// 构造方法可以接收一个字符串参数,用来描述异常的具体信息
public CustomException(String message) {
super(message);
}
}
//使用这个自定义异常。
public class Main {
public static void main(String[] args) {
try {
processData("invalid data");
} catch (CustomException e) {
System.out.println("Caught custom exception: " + e.getMessage());
}
}
public static void processData(String data) throws CustomException {
if ("invalid data".equals(data)) {
// 当数据无效时,抛出自定义异常
throw new CustomException("The provided data is invalid.");
} else {
// 正常处理数据的逻辑
System.out.println("Processing data: " + data);
}
}
}



















