我想知道为什么spring只处理未检查的异常.....谁能解释这背后的原因是什么。
Spring使用的任何设计模式都可以避免检查异常?
不是设计模式,而是 异常处理的最佳实践 。
考虑下面的代码:
public void consumeAndForgetAllExceptions(){ try { ...some code that throws exceptions } catch (Exception ex){ ex.printStacktrace(); } }
上面的代码有什么问题?
引发异常后,将暂停正常程序执行,并将控制权转移到catch块。catch块捕获异常并抑制它。在catch块之后继续执行程序,好像什么也没发生。
接下来呢?
public void someMethod() throws Exception{ }
这种方法是空白的。它没有任何代码。 空白方法如何引发异常? Java不会阻止您这样做。
我想知道为什么spring只处理未检查的异常?
我个人更喜欢在throws原因中声明的未经检查的异常。当我对异常不感兴趣时,我讨厌不得不捕捉它们。我同意规范需要更多的异常类型,但是我不同意应检查它们。大多数框架都依赖于未经检查的异常,而不仅仅是Spring框架。
Java的API有许多未检查异常,如 NullPointerException,IllegalArgumentException和IllegalStateException。我更喜欢使用Java提供的标准异常,而不是创建自己的标准异常。它们使我的代码易于理解,并避免增加代码的内存占用量。
NullPointerException
IllegalArgumentException
IllegalStateException
也可以看看: