← 返回笔记

学习笔记

Java 异常与 IO 流:两个面试高频主题

2026-08-18 09:00 IO 流Java 基础异常处理

把 Throwable 异常体系和 IO 流分类放在一起复盘,聚焦 Java 基础中的高频面试主题。

Java 异常与 IO 流:两个面试高频主题

来源:异常专题 + IO 流课程笔记 · 整理:婉萤

异常:先看懂 Throwable 家谱

Throwable
├── Error        —— 系统级错误,程序无法处理(OutOfMemoryError 等)
└── Exception
    ├── RuntimeException   —— 运行时异常:空指针、下标越界、类型转换……
    └── 受检异常            —— 编译期强制处理:IOException、SQLException……

处理三件套:

  • try-catch-finally:finally 里放资源释放,return 也会执行
  • throws:自己不想处理就声明抛给上层
  • throw:主动抛异常,配合自定义异常表达业务错误(如「余额不足」)

要点:异常链——包装时保留原始异常 throw new RuntimeException("xxx", e),日志里才有根因。

IO 流:按「方向 × 单位」分类

  • 按方向:输入流(读)/ 输出流(写)
  • 按单位:字节流(InputStream/OutputStream,万物皆字节)/ 字符流(Reader/Writer,处理文本)

典型组合:FileInputStream + FileOutputStream 做文件复制,BufferedReader 按行读文本。

实验里的实战

  • 26 个大写字母写入 a.txt,读出后转小写
  • c.txt 内容去重 + 自然排序,写入 d.txt(集合 + IO 联动)
  • 对象序列化:ObjectOutputStream 把对象整个写入文件

一句话总结

异常管理的是「出错了怎么办」,IO 管理的是「数据从哪来、到哪去」。两者共同点是:资源用完必须关——异常处理里忘了关流,就是内存泄漏的开始。