我怎么能拥有
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".
所有可以抛出的东西都是Throwable.有两种类型Throwable:
一个小类的Exception就是RuntimeException,这是"未登记" -这意味着你不必申报或赶上他们.这些通常用于"编程错误",如NullPointerException或ArrayOutOfBoundsException.
Errors也是"未经检查",用于"不可恢复"的情况,如OutOfMemoryError等.
任何Throwable 都不是子类Error或被RuntimeException"检查",必须声明为抛出或捕获.