Throwable是java中所有错误和异常的超类。 Error是所有不应该由应用处理的错误的超类。

捕获ThrowableError也会捕获OutOfMemoryErrorInternalError,这些错误不应该由应用处理。

只有 Exception和它的子类应该被捕获。

如下代码演示了这个规则:

try { /* ... */ } catch (Throwable t) { /* ... */ }    // Non-Compliant
try { /* ... */ } catch (Error e) { /* ... */ }        // Non-Compliant
try { /* ... */ } catch (Exception e) { /* ... */ }    // Compliant