异常处理与问题排查

程序会失败。区别只在于:失败时是崩溃给你一脸懵,还是留下清晰线索。本周学习 异常,以及怎么读堆栈。

异常是什么

异常是程序运行期的「意外事件对象」。Java 里常见两类:

  • 检查异常(Checked):编译期强制处理(如部分 IO)
  • 运行时异常(Runtime):如 NullPointerExceptionIllegalArgumentException

入门阶段你遇到最多的是运行时异常。

try-catch-finally

public static int parseAge(String text) {
    try {
        return Integer.parseInt(text);
    } catch (NumberFormatException e) {
        System.out.println("年龄格式错误: " + text);
        return -1;
    } finally {
        // 无论是否异常都会执行,常用于关闭资源
    }
}

原则:

  1. 只捕获你能处理的异常
  2. 不要空的 catch (Exception e) {} 把问题吞掉
  3. 留给调用方的错误,要带上上下文信息

抛出异常

public void setAge(int age) {
    if (age <= 0 || age > 150) {
        throw new IllegalArgumentException("非法年龄: " + age);
    }
    this.age = age;
}

这比默默设成 0 更负责任:问题暴露在发生处。

怎么读堆栈(超级重要)

报错时从 最上面第一条「你的代码」 看起:

Exception in thread "main" java.lang.NullPointerException
    at com.eden.Student.introduce(Student.java:18)
    at com.eden.Main.main(Main.java:10)

含义:Main.java 第 10 行调用了 introduce,在 Student.java 第 18 行空指针。去 18 行看谁是 null

自定义异常(了解)

public class NotFoundException extends RuntimeException {
    public NotFoundException(String message) {
        super(message);
    }
}

业务里「找不到学生」比扔一个含糊的 RuntimeException 更清晰。

本周练习清单

写在最后

排查能力是程序员的生产力本身。学习是第一生产力,而读懂报错是学习的加速器。

下周:Maven 与 Git——让项目告别「单文件裸奔」。


YoungGc · Eden手记
学习是第一生产力。

posted @ 2026-07-30 09:09  Eden手记  阅读(3)  评论(0)    收藏  举报