在Java中,为什么我不能处理某些异常而不处理其他异常?

Chr*_*dal 1 java exception

我怎么能拥有

public void someMethod() {
    throw new UnsupportedOperationException();
}
Run Code Online (Sandbox Code Playgroud)

但不是

public void someMethod() {
    throw new throw new IOException();
}
Run Code Online (Sandbox Code Playgroud)

第一个很好,第二个生成编译错误"未处理的异常类型IOException".

Boh*_*ian 5

所有可以抛出的东西都是Throwable.有两种类型Throwable:

一个小类的Exception就是RuntimeException,这是"未登记" -这意味着你不必申报或赶上他们.这些通常用于"编程错误",如NullPointerExceptionArrayOutOfBoundsException.

Errors也是"未经检查",用于"不可恢复"的情况,如OutOfMemoryError等.

任何Throwable 都不是子类Error或被RuntimeException"检查",必须声明为抛出或捕获.