在 Java 里,throws 是用来声明一个方法可能会抛出哪些异常的,作用是“把异常交给调用者去处理”。
throws 写在方法声明上,表示:
这个方法本身不处理某些异常,而是抛给调用这个方法的人去处理。
返回值类型 方法名(参数) throws 异常类型1, 异常类型2 {
// 方法体
}
public void readFile() throws IOException {
// 读文件可能失败
}
调用者一看就知道:
哦,这个方法可能抛
IOException,我得处理。
public void test() throws Exception {
int a = 1 / 0; // 算术异常
}
这里没有 try-catch,而是直接 throws。
Java 的**受检异常(checked exception)**必须:
try-catch 处理throws 继续抛public void method() throws IOException {
Files.readAllBytes(Path.of("a.txt"));
}
| 关键字 | 作用位置 | 作用 |
|---|---|---|
throw |
方法内部 | 真正抛出一个异常对象 |
throws |
方法声明 | 声明可能抛出什么异常 |
// throw:真的抛
throw new RuntimeException("出错了");
// throws:声明可能抛
public void test() throws RuntimeException {
}
public void a() throws IOException {
b();
}
public void b() throws IOException {
c();
}
public void c() throws IOException {
throw new IOException("文件错误");
}
调用关系:
a → b → c(抛异常)
异常一直往上抛,直到有人 try-catch。
可以:
public static void main(String[] args) throws Exception {
// 异常直接抛给 JVM
}
⚠️ 实际项目中不推荐,因为程序会直接崩溃。
throws就是“我不处理,谁调用谁处理”的声明。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。