211. Java 异常 - Java 异常机制总结

文章目录

  • [211. Java 异常 - Java 异常机制总结](#211. Java 异常 - Java 异常机制总结)
    • [🎯 如何抛出异常(Throwing Exceptions)](#🎯 如何抛出异常(Throwing Exceptions))
      • [🔸 示例:方法中抛出异常](#🔸 示例:方法中抛出异常)
    • [✅ 如何捕获异常(Catching Exceptions)](#✅ 如何捕获异常(Catching Exceptions))
      • [🔹 基本结构:](#🔹 基本结构:)
      • [🔸 示例:文件读取异常处理](#🔸 示例:文件读取异常处理)
    • [🔍 关键点解释](#🔍 关键点解释)
    • [🔄 异常链(Exception Chaining)](#🔄 异常链(Exception Chaining))
      • [🔸 示例:包装异常信息](#🔸 示例:包装异常信息)
    • [✅ 重点强调](#✅ 重点强调)
    • [🧠 小结回顾](#🧠 小结回顾)

211. Java 异常 - Java 异常机制总结

在 Java 中,异常(Exception)是用于处理程序运行时可能出现错误的一种机制。它不仅提供了清晰的错误处理流程,还提高了代码的可维护性和可读性。


🎯 如何抛出异常(Throwing Exceptions)

如果程序中出现了错误,我们可以使用 throw 语句主动抛出异常。

java 复制代码
throw new IllegalArgumentException("参数不合法");
  • throw 后面是一个异常对象,它必须是 Throwable 类的子类。
  • 常用的异常类包括:
    • IllegalArgumentException
    • IOException
    • NullPointerException(通常由 JVM 自动抛出)

🔸 示例:方法中抛出异常

java 复制代码
public void setAge(int age) throws IllegalArgumentException {
    if (age < 0) {
        throw new IllegalArgumentException("年龄不能为负数");
    }
    this.age = age;
}

如果方法中可能抛出检查型异常(Checked Exception) ,必须使用 throws 声明:

java 复制代码
public void readFile(String path) throws IOException {
    // 可能会抛出 IOException
}

✅ 如何捕获异常(Catching Exceptions)

Java 提供了 try-catch-finally 结构来捕获和处理异常。

🔹 基本结构:

java 复制代码
try {
    // 可能抛出异常的代码
} catch (ExceptionType1 e1) {
    // 处理异常1
} catch (ExceptionType2 e2) {
    // 处理异常2
} finally {
    // 无论是否发生异常,这里的代码一定会执行
}

🔸 示例:文件读取异常处理

java 复制代码
try {
    FileReader reader = new FileReader("data.txt");
    // 读取文件
} catch (FileNotFoundException e) {
    System.out.println("文件未找到: " + e.getMessage());
} finally {
    System.out.println("无论如何我都会执行");
}

🔍 关键点解释

关键语法 作用 说明
try 尝试执行可能抛出异常的代码 包围可能出错的代码块
catch 处理指定类型的异常 可以有多个 catch 块,按从小到大顺序匹配
finally 总会执行的代码块 常用于关闭资源、释放内存等清理操作
throws 方法声明抛出异常 必须声明检查型异常(如 IOException
throw 主动抛出异常 跟随一个 Throwable 实例

🔄 异常链(Exception Chaining)

Java 支持异常链,即一个异常可以包含另一个异常作为其"原因"。

🔸 示例:包装异常信息

java 复制代码
try {
    connectToDatabase();
} catch (SQLException e) {
    throw new RuntimeException("数据库连接失败", e);
}

通过异常链,我们可以保留最初的错误信息,便于排查问题。


✅ 重点强调

  • try-with-resources 示例(现代 Java 中的推荐做法):
java 复制代码
try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
    String line = reader.readLine();
} catch (IOException e) {
    e.printStackTrace();
}

🧠 小结回顾

  • 异常对象 携带错误信息,通过 throw 抛出。
  • 使用 try-catch-finally 来安全处理错误。
  • 异常可沿方法链向上传播,直到被处理。
  • 使用异常链可以追踪错误的根源。
  • finally 是清理资源的最佳位置。
相关推荐
m0_5873830025 分钟前
全民健身解决方案软件开发实战:从架构设计到落地指南
java·spring boot·spring·架构·需求分析
白山编程大哥27 分钟前
Java OutputStreamWriter 详解:从字符到字节的桥梁
java·开发语言·python
落羽的落羽1 小时前
【AI】快速理解AI应用的相关名词概念
linux·c++·人工智能·python·计算机网络·算法
Chasing__Dreams1 小时前
大模型应用开发--13--RAG 查询优化策略
python
shmily麻瓜小菜鸡1 小时前
JavaScript / TypeScript 易踩坑知识点 —— 异步编程类
开发语言·javascript·typescript
“AI国潮设计-小江”1 小时前
《Python实战 | SDXL大模型批量生成“英歌舞海浪”蛋糕IP,附核心Prompt控制代码与IP授权变现思路》
人工智能·python·prompt·aigc
一技安身1 小时前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka
七夜zippoe2 小时前
为什么 2026 年每个 Java 团队都该懂 AI Agent
java·开发语言·人工智能
znnnk2 小时前
【Python】GUI 开发从入门到实战(三):PyQt/PySide 进阶之路
开发语言·python·pyqt
时凌云.2 小时前
【2026最新】JDK 下载安装与环境配置全教程(Windows/Mac/Linux 三平台,零基础友好)
java·linux·macos