验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

运行时异常需要Throws吗

阅读:638 来源:乙速云 作者:代码code

运行时异常需要Throws吗

简短结论:不需要,也不建议。

运行时异常(RuntimeException 及其子类)不需要在方法上声明 throws,也不强制要求捕获。


一、Java 异常的分类

Java 的异常分为两大类:

1️⃣ 编译时异常(Checked Exception)

  • 继承自 Exception,但不是 RuntimeException
  • 必须处理:要么 try-catch,要么 throws
  • 例如:
    • IOException
    • SQLException
    • FileNotFoundException
public void readFile() throws IOException {
    Files.readAllBytes(Paths.get("a.txt"));
}

2️⃣ 运行时异常(Unchecked Exception)

  • 继承自 RuntimeException
  • 不强制处理
  • 编译期不会检查
  • 例如:
    • NullPointerException
    • IllegalArgumentException
    • IndexOutOfBoundsException
public void test() {
    throw new NullPointerException("空指针");
}

不需要写 throws


二、运行时异常用 throws 会怎样?

✅ 语法上允许,但没意义

public void test() throws NullPointerException {
    throw new NullPointerException();
}
  • 编译器不会强制你处理
  • 阅读代码的人反而会被误导
  • 不符合 Java 规范的设计意图

三、什么时候该用运行时异常?

✅ 适合用运行时异常的场景:

  • 程序逻辑错误
  • 调用方本应避免的问题
  • 不希望强制调用方处理

例如:

public void setAge(int age) {
    if (age < 0) {
        throw new IllegalArgumentException("年龄不能为负数");
    }
}

四、什么时候用 throws(编译时异常)?

✅ 适合用 throws 的场景:

  • 外部不可控因素
  • 调用方必须知道并处理

例如:

public void save() throws IOException {
    // 文件操作
}

五、总结一句话

异常类型 是否需要 throws 是否强制捕获
编译时异常 ✅ 需要 ✅ 强制
运行时异常 ❌ 不需要 ❌ 不强制

结论:运行时异常不需要 throws,也不应该滥用 throws 来声明它们。

如果你愿意,我也可以帮你总结 什么时候该自定义异常、该继承 RuntimeException 还是 Exception

分享到:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>