嵌套异常与现代(Java SE 7)异常

上下文与嵌套异常的异常有哪些优缺点?

为什么我在乎

作为一个没有背景知识或了解Java背景的开发人员,我偶然发现了更新开源项目异常处理的可能性,但我希望确保我所做的改变是有益的.

有问题的项目是ddlutils.它目前使用org.apache.commons.lang.exception,其中指出:

“Provides JDK 1.4 style Nested Exception functionality for those on prior Java versions.”

当前版本的Commons Lang(编写时为3.1)使用org.apache.commons.lang3.exception,其中指出:

“Contains the concept of an exception with context i.e. such an exception will contain a map with keys and values. This provides an easy way to pass valuable state information at exception time in useful form to a calling process.”

最佳答案 讨论这个你应该知道大约10年前发布的JDK1.4.它发明了异常链,只是意味着你有一个带有原因异常的构造函数.然后打印出所有内容的漂亮复合堆栈跟踪.在JDK1.4之前,JDK中存在许多这样的实现,并且这些实现已经统一到单个一致的解决方案.现在,lang所做的是提供一些类似的基类来将这个想法传递给较旧的JDK.但是,由于发生了很多事情:

> JDK 1.3公共维护期结束
> JDK 1.4公共维护期结束
> JDK 5公共维护期结束
>现在JDK 6的公共维护期即将结束.

因此,简单地说’JDK 1.4’版本中没有任何人会被强行插入.

另一方面,这个带有上下文的异常事件与任何JDK版本无关.它又是异常的基类,但它有一个Map来放置东西.通常,这是由具有附加字段的特殊异常类型实现的.这是类型安全,漂亮和干净.在每个例外都有一张地图,意味着永远不知道这张地图中的内容.我想不出这提供的任何好处.所以,如果你没有一个非常好的计划来使用它,我不会推荐它.

点赞