在 Java 中,throws 和 throw 是两个不同的概念,很多人会混淆。下面我分别说明,并给出示例。
作用:手动抛出一个异常(可以是系统异常,也可以是自定义异常)。
throw new 异常类型(参数);
public void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("年龄必须大于等于18岁");
}
}
作用:告诉调用者,这个方法可能会抛出某种异常,调用者必须处理(捕获或继续抛出)。
返回值类型 方法名(参数) throws 异常类型1, 异常类型2 {
}
public void readFile(String path) throws IOException {
FileInputStream fis = new FileInputStream(path);
}
调用该方法时:
public static void main(String[] args) {
try {
readFile("test.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
| 对比项 | throw | throws |
|---|---|---|
| 位置 | 方法内部 | 方法声明处 |
| 作用 | 真正抛出异常对象 | 声明可能抛出的异常 |
| 数量 | 只能抛一个 | 可声明多个 |
// 自定义异常
class MyException extends Exception {
public MyException(String msg) {
super(msg);
}
}
public class Test {
public static void test(int num) throws MyException {
if (num < 0) {
throw new MyException("数字不能为负数");
}
}
public static void main(String[] args) {
try {
test(-1);
} catch (MyException e) {
System.out.println(e.getMessage());
}
}
}
如果你是想问 “如何在方法中抛出异常并让上层处理”,或者 “Spring / 项目中怎么用”,可以继续问我。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。