当前位置: 首页 > news >正文

Java 异常

Java 异常的体系结构

java.lang.Throwable
├── Error(严重错误,程序无法处理)
│   ├── OutOfMemoryError
│   ├── StackOverflowError
│   └── ...
└── Exception(程序可以处理的异常)├── Checked Exception(编译时异常)│   ├── IOException│   ├── SQLException│   └── ...└── Unchecked Exception(运行时异常,RuntimeException)├── NullPointerException├── ArrayIndexOutOfBoundsException├── ClassCastException└── ...

Error(错误)

不建议捕获,如 OutOfMemoryError、StackOverflowError 通常是 JVM 层级的错误

Checked Exception(受检查异常)

编译阶段必须处理(捕获或抛出)常见如:IOException、SQLException

Unchecked Exception(非受检查异常)

编译器不会强制处理 多为编程错误:NullPointerException、ArithmeticException、ArrayIndexOutOfBoundsException

异常处理机制

try-catch-finally

try {// 可能抛出异常的代码
} catch (ExceptionType e) {// 处理异常
} finally {// 无论是否发生异常都会执行
}

多异常处理

catch (IOException | SQLException e) {// 多个异常的统一处理
}

try-with-resources

try-with-resources 是 Java 7 引入的一个语法结构,用于 自动关闭资源,避免忘记关闭资源导致内存泄漏或句柄耗尽

try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {String line;while ((line = br.readLine()) != null) {System.out.println(line);}
} catch (IOException e) {e.printStackTrace();
}
// 不需要手动调用 br.close()!

抛出异常

throw 语句

throw new IllegalArgumentException("参数非法");

throws

throws 的作用

将异常抛给调用者处理:如果一个方法内部可能抛出异常,但该方法自己不处理(没有 try-catch),就需要在方法签名中使用 throws 把异常抛出去,让调用者负责处理

让编译器检查异常是否被处理:对 Checked Exception(受检异常),Java 编译器会强制要求你

  • 要么用 try-catch 捕获
  • 要么用 throws 向上传递
public void readFile(String path) throws IOException {FileReader reader = new FileReader(path); // 可能抛出 IOException
}

调用者必须处理异常:

try {readFile("test.txt");
} catch (IOException e) {e.printStackTrace();
}
http://www.dtcms.com/a/179598.html

相关文章:

  • 【PhysUnits】2 SI 量纲 实现解析(prefix.rs)
  • el-table合并单元
  • 数据结构(三)——栈和队列
  • uniapp-文件查找失败:‘@dcloudio/uni-ui/lib/uni-icons/uni-icons.vue‘
  • 记录一次华为魔改 fusionlnsight和ai问答的狗血故事
  • git 多个提交记录合并为一个
  • 为什么强调 RESTful 的无状态性?-优雅草卓伊凡
  • A2A Hello World搭建
  • CTF杂项入门(BUUCTF-Misc第一页)
  • 智能外呼机器人的核心优势
  • 手撕基于AMQP协议的简易消息队列-7(客户端模块的编写)
  • 安装Pod网络插件时pod状态变为ImagePullBackOff
  • 贵州安全员考试内容有哪些?
  • VB自动获取彩票网页数据指南
  • VUE——自定义指令
  • MySQL基础关键_012_事务
  • PH热榜 | 2025-05-08
  • element-ui form 组件源码分享
  • GoogLeNet详解
  • 常用 svg ICON
  • 详细聊聊 Synchronized,以及锁的升级过程
  • Cursor+AI辅助编程-优先完成需求工程结构化拆解
  • 1分区 1-113 多线不起总线启
  • Optimum详解
  • LeetCode 216.组合总和 III:回溯算法实现与剪枝优化
  • 日拱一卒 | RNA-seq数据质控(1)
  • 400种行业劳动合同模板
  • 从零到精通:GoFrame ORM 使用指南 - 特性、实践与经验分享
  • vfrom表单设计器使用事件机制控制字段显示隐藏
  • SpringAI实现AI应用-自定义顾问(Advisor)