
## 1. java.lang包中的核心异常类

### 1.1 Error及其子类（系统错误）

```java
// 虚拟机错误
VirtualMachineError
    ├── OutOfMemoryError          // 内存不足
    ├── StackOverflowError        // 栈溢出
    ├── InternalError            // 虚拟机内部错误
    └── UnknownError             // 未知错误

// 链接错误
LinkageError
    ├── NoClassDefFoundError     // 类定义未找到
    ├── ClassFormatError         // 类格式错误
    ├── VerifyError              // 验证错误
    ├── IncompatibleClassChangeError // 不兼容的类变更
    │   ├── NoSuchFieldError     // 字段未找到
    │   ├── NoSuchMethodError    // 方法未找到
    │   └── IllegalAccessError   // 非法访问错误
    └── UnsatisfiedLinkError     // 未满足的链接错误
```

### 1.2 Exception及其子类

```java
// 运行时异常（非检查型）
RuntimeException
    ├── NullPointerException           // 空指针异常
    ├── ArrayIndexOutOfBoundsException // 数组越界
    ├── StringIndexOutOfBoundsException // 字符串索引越界
    ├── ClassCastException             // 类转换异常
    ├── IllegalArgumentException      // 非法参数异常
    │   ├── NumberFormatException      // 数字格式异常
    │   ├── IllegalThreadStateException // 非法线程状态
    │   └── InvalidParameterException  // 无效参数异常
    ├── IllegalStateException          // 非法状态异常
    ├── UnsupportedOperationException  // 不支持的操作异常
    ├── ArithmeticException            // 算术异常
    ├── NegativeArraySizeException     // 负数组大小异常
    ├── ArrayStoreException            // 数组存储异常
    ├── SecurityException              // 安全异常
    ├── ConcurrentModificationException // 并发修改异常
    ├── IndexOutOfBoundsException      // 索引越界异常
    ├── NoSuchElementException         // 无此元素异常
    └── EmptyStackException            // 空栈异常

// 检查型异常
Exception
    ├── IOException (在java.io包中，但继承自Exception)
    ├── SQLException (在java.sql包中)
    ├── ReflectiveOperationException
    │   ├── ClassNotFoundException    // 类未找到
    │   ├── NoSuchMethodException     // 方法未找到
    │   ├── NoSuchFieldException      // 字段未找到
    │   └── IllegalAccessException    // 非法访问异常
    ├── CloneNotSupportedException    // 克隆不支持异常
    ├── InterruptedException          // 线程中断异常
    └── ParseException (在java.text包中)
```

## 2. java.io包中的IO异常类

```java
IOException
    ├── FileNotFoundException          // 文件未找到异常
    ├── EOFException                   // 文件结束异常
    ├── SocketException (在java.net包中)
    ├── InterruptedIOException         // 中断IO异常
    ├── UnsupportedEncodingException   // 不支持的编码异常
    ├── UTFDataFormatException         // UTF数据格式异常
    ├── SyncFailedException            // 同步失败异常
    ├── CharConversionException        // 字符转换异常
    ├── ObjectStreamException          // 对象流异常
    │   ├── InvalidClassException      // 无效类异常
    │   ├── NotSerializableException   // 不可序列化异常
    │   ├── StreamCorruptedException   // 流损坏异常
    │   └── WriteAbortedException      // 写入中止异常
    ├── ZipException (在java.util.zip包中)
    └── JarException (在java.util.jar包中)
```

## 3. java.net包中的网络异常类

```java
IOException
    └── SocketException
        ├── BindException              // 绑定异常
        ├── ConnectException           // 连接异常
        ├── NoRouteToHostException     // 无路由到主机异常
        └── PortUnreachableException   // 端口不可达异常

// 其他网络异常
MalformedURLException                 // 错误的URL格式异常
ProtocolException                     // 协议异常
UnknownHostException                  // 未知主机异常
UnknownServiceException               // 未知服务异常
URISyntaxException                    // URI语法异常
```

## 4. java.util包中的工具类异常

```java
// 并发异常
ConcurrentModificationException       // 并发修改异常

// 其他工具异常
EmptyStackException                   // 空栈异常
InputMismatchException                // 输入不匹配异常
NoSuchElementException                // 无此元素异常
TooManyListenersException             // 监听器过多异常
IllegalFormatException                // 非法格式异常
DuplicateFormatFlagsException         // 重复格式标志异常
UnknownFormatConversionException      // 未知格式转换异常
MissingFormatArgumentException        // 缺少格式参数异常
MissingFormatWidthException           // 缺少格式宽度异常
MissingResourceException              // 缺少资源异常
```

## 5. java.util.concurrent包中的并发异常

```java
ExecutionException                    // 执行异常
CancellationException                 // 取消异常
TimeoutException                      // 超时异常
BrokenBarrierException                // 屏障损坏异常
RejectedExecutionException            // 拒绝执行异常
CompletionException                   // 完成异常
```

## 6. java.security包中的安全异常

```java
AccessControlException                // 访问控制异常
GeneralSecurityException              // 通用安全异常
    ├── InvalidKeyException           // 无效密钥异常
    ├── KeyManagementException        // 密钥管理异常
    ├── KeyStoreException             // 密钥库异常
    ├── NoSuchAlgorithmException      // 无此算法异常
    ├── SignatureException            // 签名异常
    ├── CertificateException          // 证书异常
    ├── InvalidAlgorithmParameterException // 无效算法参数异常
    └── UnrecoverableKeyException     // 不可恢复密钥异常
```

## 7. java.text包中的文本处理异常

```java
ParseException                        // 解析异常
```

## 8. java.time包中的时间异常

```java
DateTimeException                     // 日期时间异常
```

## 9. java.nio包中的NIO异常

```java
BufferOverflowException               // 缓冲区溢出异常
BufferUnderflowException              // 缓冲区下溢异常
InvalidMarkException                  // 无效标记异常
ReadOnlyBufferException               // 只读缓冲区异常
```

## 10. 其他重要的异常类

```java
// javax包中的异常
javax.management.JMException
javax.naming.NamingException
javax.servlet.ServletException
javax.transaction.TransactionException

// 企业级异常
javax.ejb.EJBException
javax.persistence.PersistenceException
```

## 11. 常见的自定义异常基类

虽然这些不是Java内置的，但经常被用作自定义异常的基类：

```java
// 业务异常
BusinessException
ApplicationException
ServiceException
DAOException

// 系统异常
SystemException
TechnicalException
InfrastructureException
```

## 异常类层次结构总结

```
Throwable
├── Error (系统错误，不可恢复)
│   ├── VirtualMachineError
│   ├── LinkageError
│   └── ...
│
└── Exception (应用程序异常)
    ├── RuntimeException (非检查型异常)
    │   ├── NullPointerException
    │   ├── IllegalArgumentException
    │   ├── IllegalStateException
    │   └── ...
    │
    └── 其他Exception (检查型异常)
        ├── IOException
        ├── SQLException
        ├── ReflectiveOperationException
        └── ...
```

## 使用建议

1. **选择合适的异常类型**：根据具体场景选择最合适的异常类
2. **避免捕获过于宽泛的异常**：不要轻易捕获 `Exception` 或 `Throwable`
3. **自定义异常**：当内置异常无法准确描述问题时，创建自定义异常
4. **异常信息**：提供清晰、有用的异常信息
5. **异常链**：保留原始异常信息，便于问题追踪

这个列表涵盖了Java标准库中大部分常用的异常类，实际开发中还会遇到各种框架和库提供的特定异常类。