我想知道为什么spring只处理未经检查的异常.....任何人都可以解释这背后的原因。
Spring正在使用任何设计模式,以避免检查异常?
答案 0 :(得分:15)
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中提供的标准异常,而不是创建自己的异常。它们使我的代码易于理解,并避免增加代码的内存占用。
另见:
答案 1 :(得分:3)
Spring的中心主题是依赖注入和IOC。受检查的异常会添加不必要的代码并创建更多的依赖项。因此,检查异常的依赖成本大于其收益。它们降低了测试代码的能力。它们导致较低的内聚和较高的耦合。您的代码目标应是高凝聚力和低耦合。 Spring专注于S.O.L.I.D设计原则。