在 Java 里,throws 和 throw 是两个很容易被搞混、但其实含义很清楚的概念。我们分开说,再总结“怎么懂”。
throw 是手动抛出一个异常对象。
throw new RuntimeException("出错了");
理解为:
“这里出问题了,我主动把这个异常扔出去”
特点:
throw 就中断当前流程示例:
public void checkAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("年龄不能为负");
}
}
throws 是方法签名上的声明,意思是:
“这个方法里可能会抛出这些异常,调用我的人要处理好”
public void readFile() throws IOException {
// 可能抛 IOException
}
理解重点:
✅ throw:真正扔
✅ throws:提前说我会扔
例子:
public void test() throws Exception {
throw new Exception("手动异常");
}
意思是:
我这个方法可能会抛 Exception(throws),
这里我真的抛了(throw)
比如 IOException、SQLException
public void save() throws IOException {
// 不 try-catch,直接 throws
}
交给上层调用者决定怎么处理
❌ throws 不会抛出异常
✅ 它只是“声明”
❌ throw 可以写多个
✅ 一次只能 throw 一个异常对象
❌ 运行时异常必须 throws
✅ RuntimeException 不用声明
throw 是“扔”
throws 是“说我会扔”
如果你愿意,我也可以用生活比喻 / 面试问答 / 代码对比图再帮你记一遍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。