问题
上下文异常与嵌套异常的优缺点是什么?
为什么我在乎
作为一个没有Java背景或不了解Java背景的开发人员,我偶然发现了一个更新开源项目异常处理的可能机会,但我希望确保我所做的更改是有益的。
所讨论的项目是德鲁提尔。它目前使用的是org.apache.commons.lang.exception,它声明:
“为以前的Java版本提供JDK1.4风格的嵌套异常功能。”
当前版本的公朗 (在编写本报告时为3.1)使用org.apache.commons.lang3.exception,它声明:
“包含带有上下文的异常的概念,即这样的异常将包含带有键和值的映射。这提供了一种在异常时以有用的形式将有价值的状态信息传递给调用进程的简单方法。”
发布于 2013-03-29 15:53:23
讨论这一点,您应该知道大约10年前发布的JDK1.4。它发明了异常链,简单地说,它意味着你有一个可以引起异常的构造器。然后打印出所有这些东西的一个很好的复合堆栈痕迹。在JDK1.4之前,JDK中已经存在了许多这样的实现,这些实现已经统一到一个一致的解决方案中。commons所做的就是提供一些简单的基类来将这个想法传递给更老的JDK。然而,由于发生了许多事情:
因此,简单地说,没有人在“以前的JDK1.4”版本中有兴趣了。
另一方面,与上下文有关的异常与任何JDK版本无关。它也是异常的基类,但它有一个映射,可以在其中放置内容。通常,这是由具有附加字段的特殊异常类型实现的。这是类型安全,漂亮和干净。每一个例外都有一张地图,意味着永远不知道这张地图上会有什么东西。我想不出这能带来什么好处。所以,如果你没有一个真正伟大的计划使用它,我不会推荐它。
https://stackoverflow.com/questions/15667560
复制相似问题