异常处理就像一个活门(trap door),使你能放弃程序的正常执行序列。
异常处理的一个重要原则是“只有在你知道如何处理的情况下才捕获异常”。实际上,异常处理的一个重要目标就是把错误处理的代码同错误发生的地点相分离。这使你能在一段代码中专注于要完成的事情,至于如何处理错误,则放在另一段代码中完成。
“被检查的异常“强制你可能在还没有准备好处理错误的时候,被迫加上catch语句,这就导致了吞食则有害(harmful if swallowed)的问题。
只有在你知道如何处理的情况下才捕获异常这点上,Spring挺好,比如 JDBC 和 HttpClient 会抛出检查型异常 SqlException 和 IOException ,但是大多数情况下,我们并不知道该如何处理这些异常,也无法写出合理的捕获逻辑。而JdbcTemplate 和 RestTemplate 抛出的都是非检查型异常,你可以捕获它(在你知道如何处理的时候)—— 但编译器不会强制你捕获它。