js--22

一、异常处理核心知识

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) 合并处理多个异常。
  • 核心规则

    • 无异常:执行 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. 自定义异常

  • 步骤
    1. 定义类继承 Exception(编译时异常)或 RuntimeException(运行时异常);
    2. 提供空参构造和带异常消息的构造方法。
  • 意义 :让异常信息更贴合业务场景,见名知意(如 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 对象数组 更灵活的过滤(如过滤文件夹)

总结

  1. 异常处理 :核心是 "捕获" 或 "抛出",编译时异常必须显式处理,运行时异常可按需处理;printStackTrace() 是调试排错的核心方法。
  2. File 类 :核心是操作 "路径" 而非文件内容,mkdirs() 是创建文件夹的首选,listFiles() 是遍历目录的核心方法,操作文件前建议先用 exists() 校验路径是否存在。
  3. 实操关联 :File 类的多数方法会抛出 IOException(编译时异常),需结合异常处理机制(try...catch/throws)使用。
相关推荐
南雨北斗2 小时前
TypeScript 配置文件 `tsconfig.json`
前端
Qhappy2 小时前
某加密企业版过frida检测
javascript
木斯佳2 小时前
前端八股文面经大全:万兴科技前端实习一面(2026-2-3)·面经深度解析
前端·科技
有点心急10212 小时前
Python 入门
服务器·数据库·python
用户5757303346242 小时前
🔥 一文搞懂 JavaScript 包装类(面试必考)
javascript
yuki_uix2 小时前
别让 AI 骗了:这些状态管理工具真的适合你吗?
前端·ai编程
日月云棠2 小时前
UE5 打包后 EXE 程序单实例的两种实现方法
前端·c++
滕青山2 小时前
Base64编码/解码 核心JS实现
前端·javascript·vue.js