为什么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,例如NullPointerExceptionIllegalArgumentExceptionIllegalStateException 。 我更喜欢使用Java中提供的标准exception,而不是创建自己的exception。 它们使我的代码易于理解,并避免增加代码的内存占用。

也可以看看:

  • 未经检查的例外情况
  • exception处理的最佳实践