一、异常处理核心知识
1. 异常基础
- 本质:程序运行时的非正常情况,异常处理的核心是让程序出错后优雅执行 / 退出,而非避免错误。
- 体系 :
Throwable是根类,分为Error(系统级错误,无需处理)和Exception(程序异常,需处理);Exception又分:- 运行时异常(
RuntimeException子类):编译不报错,运行时触发(如空指针、数组越界); - 编译时异常(其他
Exception子类):编译阶段必须处理(捕获 / 抛出),否则代码无法通过编译。
- 运行时异常(
2. 异常处理方式
(1)JVM 默认处理
- 打印异常堆栈信息到控制台,直接终止程序运行(异常行后续代码不再执行)。
(2)捕获处理(try...catch)
-
基础格式 :
java
运行
try { // 可能抛出异常的代码 } catch (异常类型 变量名) { // 异常处理逻辑(如记录日志、提示用户) } finally { // 可选:无论是否异常都会执行(常用于释放资源) } -
多异常处理 :
- JDK 7 前:多个
catch块,父类异常需写在子类异常之后; - JDK 7 后:支持
catch (AException | BException e)合并处理多个异常。
- JDK 7 前:多个
-
核心规则 :
- 无异常:执行
try全部代码,跳过catch; - 有异常:
try中异常行后续代码不执行,跳转到匹配的catch; - 无匹配
catch:交给 JVM 默认处理,程序终止。
- 无异常:执行
(3)抛出处理(throw/throws)
表格
| 关键字 | 位置 | 作用 | 示例 |
|---|---|---|---|
throws |
方法定义处 | 声明方法可能抛出的异常,提醒调用者处理 | public void readFile() throws IOException {} |
throw |
方法内部 | 手动创建并抛出异常对象,方法立即终止 | throw new NullPointerException("参数不能为空"); |
3. Throwable 常用方法
表格
| 方法名 | 作用 | 场景 |
|---|---|---|
getMessage() |
返回异常详细消息 | 快速查看异常原因 |
toString() |
返回异常简短描述(类型 + 消息) | 简化异常信息展示 |
printStackTrace() |
打印完整异常堆栈 | 调试排错(最常用) |
4. 自定义异常
- 步骤 :
- 定义类继承
Exception(编译时异常)或RuntimeException(运行时异常); - 提供空参构造和带异常消息的构造方法。
- 定义类继承
- 意义 :让异常信息更贴合业务场景,见名知意(如
UserNotExistException)。
二、File 类核心知识
1. 核心定位
java.io.File 类代表文件 / 目录的路径名(而非文件本身),可指向存在 / 不存在的路径,用于操作文件系统的目录结构。
2. 构造方法
表格
| 构造方法 | 说明 | 示例 |
|---|---|---|
File(String pathname) |
根据完整路径创建 | new File("D:/test.txt") |
File(String parent, String child) |
父路径 + 子路径创建 | new File("D:/", "test.txt") |
File(File parent, String child) |
父路径 File 对象 + 子路径创建 | new File(new File("D:/"), "test.txt") |
3. 常用方法分类
(1)判断与获取类
表格
| 方法名 | 功能 | 注意事项 |
|---|---|---|
isDirectory() |
判断是否为文件夹 | - |
isFile() |
判断是否为文件 | - |
exists() |
判断路径是否存在 | 操作文件前建议先校验 |
length() |
返回文件大小(字节) | 文件夹返回 0 |
getAbsolutePath() |
返回绝对路径 | 无论创建时用相对 / 绝对路径,均返回完整路径 |
getPath() |
返回创建时的路径 | 传入什么路径就返回什么 |
getName() |
返回文件 / 文件夹名称 | 不含上级路径 |
lastModified() |
返回最后修改时间(毫秒值) | 可转换为 Date 对象 |
(2)创建与删除类
表格
| 方法名 | 功能 | 关键细节 |
|---|---|---|
createNewFile() |
创建空文件 | ① 父路径不存在抛 IOException;② 文件已存在返回 false;③ 无后缀也创建文件 |
mkdir() |
创建单级文件夹 | 父目录不存在则创建失败 |
mkdirs() |
创建多级文件夹 | 推荐使用,自动创建所有不存在的父目录 |
delete() |
删除文件 / 空文件夹 | ① 直接删除(不走回收站);② 文件夹非空时删除失败 |
(3)遍历类
表格
| 方法名 | 功能 | 扩展 |
|---|---|---|
listRoots() |
列出系统所有根目录(如 C:\、D:\) | 返回 File[] 数组 |
list() |
获取当前路径下所有内容的名称数组 | 返回 String[],仅含名称 |
list(FilenameFilter filter) |
按文件名过滤后返回名称数组 | 自定义过滤规则(如只返回 .txt 文件) |
listFiles() |
获取当前路径下所有内容的 File 对象数组 | 返回 File[],可继续操作(推荐) |
listFiles(FileFilter filter) |
按 File 过滤后返回 File 对象数组 | 更灵活的过滤(如过滤文件夹) |
总结
- 异常处理 :核心是 "捕获" 或 "抛出",编译时异常必须显式处理,运行时异常可按需处理;
printStackTrace()是调试排错的核心方法。 - File 类 :核心是操作 "路径" 而非文件内容,
mkdirs()是创建文件夹的首选,listFiles()是遍历目录的核心方法,操作文件前建议先用exists()校验路径是否存在。 - 实操关联 :File 类的多数方法会抛出
IOException(编译时异常),需结合异常处理机制(try...catch/throws)使用。