Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类。Exception 是程序正常运
行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。
Error 是指在正常情况下,不大可能出现的情况,绝大部分的 Error 都会导致程序(比如 JVM自身)处于非正常的、不可恢复状态。既然是非正常情况,所以不便于也不需要捕获,常见的比如 OutOfMemoryError 之类,都是 Error 的子类。

第一,尽量不要捕获类似 Exception 这样的通用异常,而是应该捕获特定异常,在这里是
Thread.sleep() 抛出的 InterruptedException。

第二,不要生吞(swallow)异常。这是异常处理中要特别注意的事情,因为很可能会导致非常
难以诊断的诡异情况。