Throwable是java中所有错误和异常的超类。
Error是所有不应该由应用处理的错误的超类。
捕获Throwable或Error也会捕获OutOfMemoryError或InternalError,这些错误不应该由应用处理。
只有 Exception和它的子类应该被捕获。
如下代码演示了这个规则:
try { /* ... */ } catch (Throwable t) { /* ... */ } // Non-Compliant
try { /* ... */ } catch (Error e) { /* ... */ } // Non-Compliant
try { /* ... */ } catch (Exception e) { /* ... */ } // Compliant