在 Java 中,throws 抛出并不是“总是强制”的,是否必须在方法签名上使用 throws,取决于你方法里抛出的异常类型。
throwsthrows继承自 Exception(但不包括 RuntimeException)
常见例子:
IOExceptionSQLExceptionClassNotFoundExceptiontry-catch 捕获throws 声明// 方式一:throws 声明
public void read() throws IOException {
new FileInputStream("a.txt");
}
// 方式二:try-catch
public void read() {
try {
new FileInputStream("a.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
⚠️ 如果既不 throws 也不 catch,编译不通过
继承自 RuntimeException
常见例子:
NullPointerExceptionIllegalArgumentExceptionArrayIndexOutOfBoundsExceptionpublic void test() {
throw new RuntimeException("error");
}
✅ 可以不写 throws
✅ 编译器不强制处理
即使不是强制,以下情况推荐使用 throws:
public User findUser(int id) throws UserNotFoundException {
...
}
Java 中
throws只对“检查异常”是强制的,对运行时异常不是必须的,但是一种良好的设计选择。
如果你愿意,我也可以用编译错误示例 / 面试题角度 / 源码示例再讲一遍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。