在 Java 里,throws 和 throw 经常被一起提到,但你问的是 throws(抛出),我分开来讲,重点放在 throws 上,并顺带对比 throw,这样更容易理解。
throws 用在方法声明上,表示:
这个方法可能会抛出某种异常,但我不在这里处理,交给调用者去处理。
返回值类型 方法名(参数) throws 异常类型 {
// 方法体
}
public void readFile() throws IOException {
FileReader reader = new FileReader("test.txt");
}
意思是:
readFile() 可能会抛出 IOExceptionreadFile() 的地方必须:
try-catch 处理throws 往上抛有些异常(比如文件不存在):
不想在每一个方法里都写 try-catch
| 对比点 | throws | throw |
|---|---|---|
| 位置 | 方法声明 | 方法内部 |
| 作用 | 声明“可能抛异常” | 真正“抛出异常” |
| 数量 | 可多个 | 一次一个 |
| 示例 | throws IOException |
throw new Exception() |
public void checkAge(int age) {
if (age < 18) {
throw new RuntimeException("未成年");
}
}
public void test() throws SQLException {
// 数据库操作
}
void a() throws Exception {
b();
}
void b() throws Exception {
c();
}
void c() throws Exception {
throw new Exception("错误");
}
你可以把 throws 理解为:
“我不背锅,谁调用谁处理”
或者:
throws = 免责声明
如果你愿意,我也可以给你画一个调用链示意图,或者结合 try-catch-finally 一起讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。