温馨提示×

温馨提示×

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

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

java Throws 抛出是强制吗

发布时间:2026-09-16 08:16:06 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

在 Java 中,throws 抛出并不是“总是强制”的,是否必须在方法签名上使用 throws,取决于你方法里抛出的异常类型。


一、核心结论

  • ✅ 检查异常(checked exception):必须处理或声明 throws
  • ❌ 非检查异常(unchecked exception):不强制 throws

二、两种异常的区别

1️⃣ 检查异常(Checked Exception)

继承自 Exception(但不包括 RuntimeException)

常见例子:

  • IOException
  • SQLException
  • ClassNotFoundException

✅ 处理方式(二选一):

  1. try-catch 捕获
  2. 在方法上用 throws 声明
// 方式一:throws 声明
public void read() throws IOException {
    new FileInputStream("a.txt");
}

// 方式二:try-catch
public void read() {
    try {
        new FileInputStream("a.txt");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

⚠️ 如果既不 throws 也不 catch,编译不通过


2️⃣ 非检查异常(Unchecked Exception)

继承自 RuntimeException

常见例子:

  • NullPointerException
  • IllegalArgumentException
  • ArrayIndexOutOfBoundsException
public void test() {
    throw new RuntimeException("error");
}

✅ 可以不写 throws ✅ 编译器不强制处理


三、什么时候“应该”用 throws(即使不强制)

即使不是强制,以下情况推荐使用 throws:

  • 异常不该在当前方法处理
  • 想让调用者决定如何处理
  • 写的是底层工具/框架代码
public User findUser(int id) throws UserNotFoundException {
    ...
}

四、总结一句话

Java 中 throws 只对“检查异常”是强制的,对运行时异常不是必须的,但是一种良好的设计选择。

如果你愿意,我也可以用编译错误示例 / 面试题角度 / 源码示例再讲一遍。

向AI问一下细节

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

AI
助
手