在 Java 中,throws 抛出(声明)异常 和 throw 抛出异常对象 是两个容易混淆的概念。你问的“Throws 抛出会怎样”,通常是指 方法上使用 throws 声明异常 会发生什么。下面分情况说明:
throws 是什么throws 用在 方法声明处,表示:
这个方法可能会抛出某种异常,但不在这里处理,交给调用者处理。
public void readFile() throws IOException {
// 可能抛出 IOException
}
throws 后会发生什么异常不会在方法内部被 catch,而是继续向上传播。
public void a() throws Exception {
b();
}
public void b() throws Exception {
throw new Exception("出错");
}
调用链:
b() 抛出异常 → a() 不处理 → 继续往上抛
如果调用的方法 声明了受检异常(checked exception):
✅ 调用者有两种选择:
try {
readFile();
} catch (IOException e) {
e.printStackTrace();
}
public void test() throws IOException {
readFile();
}
throws 可以写,但不是必须的:
public void test() throws NullPointerException {
throw new NullPointerException();
}
调用者 不强制处理。
throws 和 throw 的区别(重点)| 对比 | throw | throws |
|---|---|---|
| 位置 | 方法内部 | 方法声明处 |
| 作用 | 真正抛出异常对象 | 声明可能抛出的异常 |
| 数量 | 一次一个 | 可多个 |
throw new RuntimeException("错");
throws IOException, SQLException
throws 不处理会怎样?最终会:
main 方法public static void main(String[] args) throws Exception {
throw new Exception("程序崩溃");
}
throws本身不会“抛出”异常,只是“声明可能抛”;真正的抛出是throw,而异常最终要么被catch,要么导致程序终止。
如果你愿意,我可以:
你想看哪一种?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。