在 Java 中,throws 关键字用于声明方法可能抛出的异常,它后面只能跟Throwable 类或其子类。
简单说:throws 能抛出的“类”必须继承自 java.lang.Throwable。
throws 能抛出的类体系Throwable
├── Error
│ ├── OutOfMemoryError
│ ├── StackOverflowError
│ └── ...
├── Exception
│ ├── RuntimeException(非受检异常)
│ │ ├── NullPointerException
│ │ ├── IllegalArgumentException
│ │ └── ...
│ └── 其他 Exception(受检异常)
│ ├── IOException
│ ├── SQLException
│ └── ...
必须显式声明在 throws 中(或 try-catch)
public void read() throws IOException {
}
常见类:
IOExceptionSQLExceptionClassNotFoundExceptionInterruptedException可以不写 throws,但写了也合法
public void test() throws RuntimeException {
}
常见类:
RuntimeExceptionNullPointerExceptionIllegalArgumentExceptionIndexOutOfBoundsException理论可以,但实际几乎不用
public void fatal() throws OutOfMemoryError {
}
常见类:
ErrorOutOfMemoryErrorStackOverflowError⚠️ 注意:
Error 通常表示 JVM 级别问题,不应该被捕获或声明抛出。
❌ 抛出非 Throwable 类型:
throws String // 编译错误
❌ throws 普通类:
throws Object // 编译错误
Java 中
throws只能抛出Throwable及其子类,包括Exception、RuntimeException和Error,但推荐使用受检异常。
如果你愿意,我也可以给你画一张异常体系脑图或结合面试问题讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。