Throws和Throw区别在哪
throw 和 throws 在 Java 中都与异常处理相关,但用途和用法不同。
1. throw(抛出异常对象)
- 作用:用于手动抛出一个具体的异常对象。
- 位置:用在方法体内。
- 后面跟的内容:异常对象(必须是
Throwable或其子类实例)。 - 示例:
public void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("年龄必须大于等于18");
}
}
2. throws(声明异常)
- 作用:用于方法声明上,表示该方法可能抛出某些异常,需要调用者处理。
- 位置:用在方法签名中。
- 后面跟的内容:异常类名(可以多个,用逗号分隔)。
- 示例:
public void readFile() throws IOException, FileNotFoundException {
// 方法体
}
主要区别总结
| 对比点 | throw |
throws |
|---|---|---|
| 作用 | 抛出异常对象 | 声明异常类型 |
| 使用位置 | 方法体内 | 方法声明处 |
| 后面跟的内容 | 异常实例 | 异常类名 |
| 数量 | 一次只能抛一个异常 | 可以声明多个异常 |
| 异常处理 | 抛出异常后,要么被捕获,要么继续向上抛出 | 提醒调用者需要处理这些异常 |
简单记忆
throw:扔出一个异常(动作)。throws:声明可能扔出哪些异常(警告)。
结合使用示例
public void process() throws IOException {
if (error) {
throw new IOException("发生IO错误");
}
}
这里 throws 声明方法可能抛 IOException,而 throw 实际抛出该异常对象。