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

    关注我们

Throws抛出的异常谁处理

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

Throws抛出的异常谁处理

在 Java 中,通过 throws 声明抛出的异常,最终由调用者(方法的调用方)负责处理
一句话总结:

throws 只是“甩锅”,不处理异常;真正处理异常的是调用该方法的地方。


一、throws 的作用是什么?

throws 用来声明方法可能抛出的异常类型,表示:

“这个方法可能会出异常,但我不在方法里处理,交给调用者处理。”

示例

public void readFile() throws IOException {
    FileInputStream fis = new FileInputStream("a.txt");
}

这里:

  • readFile() 不处理 IOException
  • 而是声明它可能发生
  • 谁调用 readFile(),谁就必须处理

二、谁来处理 throws 抛出的异常?

✅ 由「调用者」处理,有两种方式:


✅ 方式一:继续 throws(继续往上抛)

public void test() throws IOException {
    readFile();
}
  • 异常继续向上传递
  • 最终可能传到 main 或 JVM

✅ 方式二:用 try-catch 真正处理

public void test() {
    try {
        readFile();
    } catch (IOException e) {
        System.out.println("文件读取失败");
    }
}

这是真正的异常处理


三、如果一直 throws 不处理会怎样?

最终会到达 main

public static void main(String[] args) throws IOException {
    readFile();
}

如果 main 也不处理:

  • JVM 会处理
  • 程序终止
  • 打印异常堆栈

四、throws vs try-catch 对比

对比项 throws try-catch
是否处理异常 ❌ 不处理 ✅ 处理
作用 声明异常 捕获并处理
使用位置 方法签名 方法体
后续影响 抛给调用者 异常到此结束

五、编译时异常 vs 运行时异常

✅ 编译时异常(必须处理)

public void test() throws IOException {
}
  • throws 也不 try-catch编译错误

✅ 运行时异常(可处理也可不处理)

public void test() throws RuntimeException {
}
  • 即使 throws,调用者也可以不处理

六、一句话总结(面试版)

throws 只是声明异常,不处理异常;
throws 抛出的异常由方法的调用者负责处理,
处理方式是 try-catch 或继续 throws
最终可能由 JVM 处理并终止程序。

如果你愿意,我也可以帮你画一张「异常传递流程图」或结合 Spring / 实际项目讲。

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