首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java,特定于类的异常与标准异常

Java,特定于类的异常与标准异常
EN

Stack Overflow用户
提问于 2010-01-13 03:39:27
回答 6查看 3.3K关注 0票数 14

我一直在更新一个现有的库,以抛出异常来帮助使用该库的人改进调试。

一开始,我认为我应该定义特定于每个类的异常,但事实证明,大多数异常都是现有运行时异常(例如,FooNegativeIntArgumentException extends IllegalArgumentExceptionFooNullBarException extends NullPointerException)的简单扩展,具有特定的消息。

定义新异常与使用现有异常的权衡是什么?是否有任何约定/最佳实践?

此外,考虑到向后兼容性的需要,这些异常中的大多数(如果不是全部)都是运行时异常。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-13 03:46:19

下面是my take on why we have different types of exception and when to create custom exception types (注意:这里使用.NET类型作为示例,但同样的原则也适用于Java语言和任何其他使用结构化错误处理的语言)。作为一个完整的答案,在这里发布可能太长了,所以我只发布两个关键摘录。

  1. 何时抛出不同类型的异常?为每种症状抛出不同类型的异常,这些异常可以通过编程方式进行不同的处理。

  1. 何时创建自定义异常类型?当您需要使用附加信息注释异常以帮助以编程方式处理症状时,请创建自定义异常类型。

在您的情况下,您的自定义异常类型听起来不像是在填补可以使用标准异常传达的症状的空白,而且它们不会为编程处理添加任何额外的信息,所以不要创建它们。只需使用标准版本即可。

票数 15
EN

Stack Overflow用户

发布于 2010-01-13 03:44:12

在不像这样添加任何值的情况下扩展异常是完全浪费时间的,并且会产生最好避免的持续维护成本。

使用标准异常。

这并不是说您永远不应该使用自定义异常,只是不应该在您呈现的用例中使用。

此外,在创建自定义异常时,它们应该与导致它们的条件相关,而不是与可能引发它们的类相关。将它们与业务/功能区域相关联是可以的,因为导致异常的错误条件很可能以这种方式相关,并且它将提供有用的过滤技术。

票数 8
EN

Stack Overflow用户

发布于 2010-01-13 03:45:31

来自Effective Java

您应该倾向于使用标准异常,并使用Java平台库中包含您所描述的内容的未检查异常集。重用异常有以下好处:

使您的API更易于学习和使用,因为它符合程序员已经熟悉的既定约定。

更少的异常类意味着更小的内存占用和更少的加载类时间。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2051797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档