为什么spring只处理未经检查的exception
我想知道为什么spring只处理未经检查的exception…..任何人都可以解释这背后的原因。
Spring正在使用任何设计模式,以避免检查exception?
Spring正在使用任何设计模式,以避免检查exception?
不是设计模式,而是exception处理的最佳实践 。
考虑下面的代码:
public void consumeAndForgetAllExceptions(){ try { ...some code that throws exceptions } catch (Exception ex){ ex.printStacktrace(); } }
上面的代码有什么问题?
抛出exception后,将暂停正常的程序执行,并将控制权转移到catch块。 catch块捕获exception并且只是抑制它。 在catch块之后继续执行程序,就好像什么都没发生一样。
以下怎么样?
public void someMethod() throws Exception{ }
这种方法是空白的; 它没有任何代码。 空白方法如何抛出exception? Java并不会阻止你这样做。
我想知道为什么spring只处理未经检查的exception?
我个人更喜欢在throws原因中声明的未经检查的exception。 当我对它们不感兴趣时,我讨厌必须捕获exception。 我同意规范需要更多的exception类型,但我不同意它们应该被检查。 大多数框架都依赖于未经检查的exception,而不仅仅是Spring框架。
设计API的最佳实践
- 如果客户端可以采取某些备用操作从exception中恢复,请将其作为已检查的exception 。
- 如果客户端无法执行任何有用的操作,则取消选中该exception 。 有用的,我的意思是采取措施从exception中恢复,而不仅仅是记录exception。
Java API有许多未经检查的exception,例如NullPointerException
, IllegalArgumentException
和IllegalStateException
。 我更喜欢使用Java中提供的标准exception,而不是创建自己的exception。 它们使我的代码易于理解,并避免增加代码的内存占用。
也可以看看:
- 未经检查的例外情况
- exception处理的最佳实践
- 如何模拟void方法抛出exception?
- java.lang.NullPointerException Hibernate与Ehcache一起使用
- 在编写字符串时,如何调试导致转换错误的xml对象?
- 如果服务器返回错误状态,java.net.HttpUrlConnection是否总是抛出IOException?
- 设计问题:我应该在多大程度上依赖控制流程的例外?
- Android + MySQL使用com.mysql.jdbc.Driver
- MyClass无法强制转换为java.lang.Comparable:java.lang.ClassCastException
- 无法在IntelliJ Idea中启动spring-boot应用程序
- Eclipse:在块中查找可以抛出exception的行