在 Java 里,throw 和 throws 经常被搞混,但其实差别很明显。下面用通俗的话给你讲清楚。
throw 是动作,在代码里真正把异常丢出去。
public void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("年龄必须大于18");
}
}
✅ 这里 throw 真的“扔”了一个异常出去
throws 是声明,告诉调用者:
“我这个方法可能会抛这些异常,你自己处理”
public void readFile() throws IOException {
// 可能会抛 IOException
}
调用者必须:
try {
readFile();
} catch (IOException e) {
e.printStackTrace();
}
或继续 throws
| 对比项 | throw | throws |
|---|---|---|
| 位置 | 方法内部 | 方法声明处 |
| 作用 | 真正抛出异常 | 声明可能抛出的异常 |
| 跟的内容 | 异常对象 | 异常类 |
| 数量 | 一次一个 | 可多个 |
| 是否处理异常 | 不处理 | 不处理 |
public void test() throws Exception {
if (true) {
throw new Exception("出错啦");
}
}
throw:真正抛throws:告诉别人“我会抛”throw 是“扔”
throws 是“说我会扔”
如果你愿意,我也可以帮你画流程图,或者用面试角度讲这道题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。