温馨提示×

温馨提示×

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

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

java Throws 抛出注意啥

发布时间:2026-10-07 01:56:19 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

在 Java 里使用 throws 声明抛出异常时,有几个关键点和易踩的坑需要注意:


一、throws 是“声明”,不是“处理”

throws 只是告诉调用者:这个方法可能会抛异常,你自己处理。

void read() throws IOException {
    // 可能抛 IOException
}

✅ 注意:

  • 方法内部可以不 try-catch
  • 但调用方必须 try-catch 或继续 throws

二、throws 的方法重写规则(重点)

子类重写父类方法时:

✅ 可以:

  • 不抛异常
  • 抛更少的异常
  • 抛更具体的异常(子类)

❌ 不可以:

  • 抛更宽泛的异常(父类)
  • 抛父类没有的受检异常(checked exception)
class A {
    void f() throws IOException {}
}

class B extends A {
    @Override
    void f() throws FileNotFoundException {} // ✅
    // void f() throws Exception {} ❌
}

三、受检异常 vs 非受检异常

受检异常(checked)

  • IOException, SQLException
  • 必须 throws 或 try-catch

非受检异常(unchecked)

  • RuntimeException, NullPointerException
  • 可以 throws,但没必要
void test() throws NullPointerException {} // 合法但没必要

四、不要“滥用” throws Exception

❌ 坏例子:

void process() throws Exception {}

问题:

  • 调用方不知道具体异常
  • 强制捕获所有异常,掩盖问题

✅ 好例子:

void process() throws IOException, SQLException {}

五、main 方法 throws 的后果

public static void main(String[] args) throws Exception {
    // 异常会直接终止程序
}

⚠️ 生产代码不建议这样写


六、多个异常的写法

void demo() throws IOException, SQLException {
}

Java 7+ 可合并(catch 时):

catch (IOException | SQLException e) {}

七、常见坑总结

✅ 注意这些:

  1. throws ≠ 异常已处理
  2. 重写方法不能扩大异常范围
  3. 不要一上来就 throws Exception
  4. 运行时异常不用 throws
  5. throws 会影响 API 设计可读性

如果你愿意,我可以:

  • 用 真实业务例子讲 throws
  • 对比 throw vs throws
  • 讲 面试常问的 throws 问题

你想看哪一个?

向AI问一下细节

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

AI
助
手