在学习春季时,我偶然发现了这个问题。 Java支持检查和未检查的异常。与语言无关的设计准则似乎更喜欢未检查的异常。这个问题就是为什么使用像Spring这样的控制容器反转意味着我只应使用未经检查的异常。
答案 0 :(得分:1)
“为什么使用像Spring这样的控制容器倒置意味着我应该只使用未经检查的异常”这个问题有点奇怪。而且我不确定使用IoC是否意味着您应该使用未经检查的异常。选中与未选中的关系最终取决于上下文和意见。
我对此的看法:
可以将异常分为已检查和未检查的异常。这只是意味着某些异常(已检查的异常)要求我们在编译时指定在异常发生时应用程序的行为方式。未检查的异常不要求我们进行编译时间处理。要创建此类异常,可以扩展RuntimeException类,该类是Exception的直接子类。关于已检查与未检查,一个古老而常见的指导原则是,运行时异常用于表示应用程序通常无法预期或从中恢复的情况,而已检查异常是编写良好的应用程序应在其中预期并从中恢复的情况。>
我主张仅使用运行时异常。而且,如果我使用的库中包含带有已检查异常的方法,则我将创建一个包装器方法,将其转换为运行时。那为什么不检查异常呢?鲍勃叔叔在他的“清洁代码”书中认为,这违反了开放/封闭原则,因为使用新的throws声明更改签名可能会对调用该方法的程序的许多层次产生影响。
我写了一篇有关处理异常的文章,如果感兴趣,可以查看一下:https://dzone.com/articles/how-to-deal-with-exceptions