因为某些异常不是源自
Exception-例如
Throwable和
Error。
基本上,类型层次结构是:
Object | Throwable / Exception Error
只能
Throwables抛出派生类,因此,如果您抓住
Throwable,那实际上就可以抓住一切。
Throwable,
Exception以及任何异常,从获得
Exception其他 比那些源自
RuntimeException数作为
检查的异常 -他们是的,你必须声明你扔了,或者捕捉如果你调用的东西,抛出他们。
总而言之,Java异常层次结构有点混乱……



