温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Throws 抛出能省吗

发布时间:2026-10-06 23:34:14 来源:亿速云 阅读:83 作者:小樊 栏目:编程语言

在 Java 里,throws 能不能“省”,要看你抛的是什么异常,不能一概而论。


一、结论先说

  • ✅ 运行时异常(RuntimeException 及其子类):可以省 throws
  • ❌ 受检异常(Checked Exception,如 IOException):不能省
    • 要么 throws 声明
    • 要么 try-catch 处理

二、为什么有这个规定

Java 把异常分成两类:

1️⃣ 受检异常(Checked)

编译器强制你处理,否则代码编译不过
例如:

public void read() throws IOException {
    new FileInputStream("a.txt");
}

如果你不写 throws IOException,也不 try-catch:

public void read() {
    new FileInputStream("a.txt"); // ❌ 编译错误
}

2️⃣ 运行时异常(Unchecked)

编译器不强制处理
例如:

public void test() {
    throw new RuntimeException("error");
}

✅ 完全合法,不需要 throws


三、常见“能省”的情况

public void method() {
    if (true) {
        throw new IllegalArgumentException("参数错误");
    }
}

✅ 不用 throws


四、常见“不能省”的情况

public void method() throws InterruptedException {
    Thread.sleep(1000);
}

如果写成:

public void method() {
    Thread.sleep(1000); // ❌ 编译错误
}

必须二选一:

  • throws InterruptedException
  • 或 try-catch

五、是否可以“故意省掉 throws”?

可以,但只针对 受检异常转运行时异常:

public void read() {
    try {
        new FileInputStream("a.txt");
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

✅ 这样调用方就“感觉不到”受检异常了

⚠️ 但这是设计选择,不是语法省略


六、什么时候不建议省?

  • 调用方必须知道可能失败(如文件、网络、数据库)
  • 框架/接口规范要求(如 Servlet、Spring)

七、一句话总结

Java 里 throws 不能随便省,受检异常必须处理或声明,运行时异常可以省。

如果你愿意,可以贴一段代码,我帮你判断能不能省。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手