首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义异常的成本

自定义异常的成本
EN

Stack Overflow用户
提问于 2011-05-27 05:48:42
回答 8查看 342关注 0票数 4

我读到过抛出异常是一个开销很大的操作。但是,创建自己的异常难道不会使代码更具表现力和可读性吗?

我的一些同事建议您只使用System.Exception并将自定义文本插入到消息中,而不是创建新的自定义异常。

我对其他的观点很感兴趣。感谢您的建议。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-05-27 05:53:35

不要抛出System.Exception。永远不会。

它的问题在于调用代码。捕获一般的Exception对象是一种糟糕的做法,原因有很多。如果抛出Exception基类的一个实例,那么如果调用代码想要处理它,那么它们别无选择,只能捕获Exception。这迫使调用代码使用一种不好的做法。

此外,如果调用代码只得到Exception,那么它就没有可靠的方法来区分异常是什么。

通常最好使用一个预定义的例外(如果有) (ArgumentExceptionInvalidOperationException等)。如果没有一个正确地描述了这种情况,那么自定义异常类是一种非常好的方法。

票数 4
EN

Stack Overflow用户

发布于 2011-05-27 05:52:54

这是抛出异常本身的开销(创建对象、遍历堆栈等)。这是很昂贵的。创建你自己的异常类几乎不会增加任何开销,所以如果你要抛出一个异常,不要让它变成new Exception("message")

票数 2
EN

Stack Overflow用户

发布于 2011-05-27 05:57:29

异常不是由人读取的(尽管它们的消息和堆栈跟踪是由人读取的),它们是由代码读取的。如果你的代码可以做一些事情来响应一个自定义的异常,那么一定要去做。但是这个异常注定要被记录下来,没有必要自定义一个。

自定义异常的开销在于它们是另一件需要维护和测试的事情。如果现有的异常是合适的,请改用它。(例如,用ArgumentNullException代替ZipCodeNullException。)

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

https://stackoverflow.com/questions/6145518

复制
相关文章

相似问题

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