温馨提示×

温馨提示×

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

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

java Throws 抛出如何捕获

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

在 Java 中,throws 和 throw 是两个相关但不同的概念,先简单区分一下:

  • throw:在方法内部真正抛出一个异常对象
  • throws:在方法声明处说明该方法可能抛出的异常(交给调用者处理)

你问的“Throws 抛出如何捕获”,通常是指:

一个方法用 throws 声明了异常,调用这个方法时该如何捕获?


一、基本捕获方式(try-catch)

如果一个方法声明了 throws 异常,调用它时必须:

  1. 用 try-catch 捕获
    或
  2. 继续用 throws 往上抛

示例 1:使用 try-catch 捕获

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Demo {
    public static void main(String[] args) {
        try {
            readFile(); // 调用 throws 方法
        } catch (FileNotFoundException e) {
            System.out.println("文件未找到:" + e.getMessage());
        }
    }

    // 方法声明 throws
    public static void readFile() throws FileNotFoundException {
        FileInputStream fis = new FileInputStream("test.txt");
    }
}

✅ readFile() 抛出的异常,在 main 中被捕获


二、继续 throws(不捕获)

如果你不想在当前方法处理,可以继续往上抛:

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

⚠️ 注意:

  • 如果是 非 RuntimeException(受检异常),必须处理或声明
  • 如果是 RuntimeException(非受检异常),可以不写 throws

三、捕获多个异常

try {
    method();
} catch (IOException e) {
    e.printStackTrace();
} catch (ParseException e) {
    e.printStackTrace();
}

Java 7+ 也可以写:

catch (IOException | ParseException e) {
    e.printStackTrace();
}

四、finally 一定会执行

try {
    readFile();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} finally {
    System.out.println("无论是否异常都会执行");
}

五、throw 和 throws 配合示例

public void checkAge(int age) throws Exception {
    if (age < 18) {
        throw new Exception("年龄太小");
    }
}

调用时:

try {
    checkAge(15);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

六、总结一句话

throws 只是“声明可能抛异常”,真正捕获异常要用 try-catch

如果你愿意,可以告诉我:

  • 是 受检异常还是运行时异常
  • 是 方法内部 throw 还是方法声明 throws

我可以给你更针对性的例子。

向AI问一下细节

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

AI
助
手