c# - .NET try/catch 便宜吗?

标签 c# .net performance exception

<分区>

Possible Duplicate:
Performance Cost Of 'try'

我在 MSDN 的“处理异常的最佳实践”中偶然发现了这个评论:

“使用异常处理更好,因为在正常情况下执行的代码更少”

在上下文中是否应该在调用方法之前检查对象的状态,或者只是调用方法并捕获异常。以上建议是在异常事件很少见的情况下。

假设属性检查并不意味着昂贵的计算,而只是返回一个状态值,与属性检查相比,非抛出情况下 try/catch block 的执行成本有多低?

我想知道这个建议,因为即使 try/catch 是免费的或接近免费的,被调用的方法在很多情况下也会自己做一堆检查。

最佳答案

.NET 中的异常非常廉价,除非它们被引发。一旦引发异常,有效成本就会增加很多。

话虽这么说,但我强烈建议您在此处针对最可维护的解决方案进行编程,并在且仅当测量后证明这是一个问题时才担心性能。

一个只返回状态的属性获取方法被优化为一个字段查找,并且几乎是一个单一的操作——通常任何事情都会比以后的更慢。但是,我怀疑异常处理是否会对您的整体速度造成任何明显影响,除非它处于非常非常紧密的循环中 - 在这种情况下,整体性能可能不会比您为避免异常处理而引入的检查差.

关于c# - .NET try/catch 便宜吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025523/

相关文章:

ruby - 为什么我的基本 Heroku 应用程序需要两秒钟才能加载?

java - 第二种方法调用比第一种方法花费的时间少得多

c# - 通过网络流访问sqlite数据库

c# - Visual Studio 2013 编码的 UI 测试

.net - .NET 常用日志中记录器名称的含义是什么?

java - 用于性能指标存储的开源技术

c# - 解析值行 1,位置 1 时遇到意外字符

c# - 在 Dynamic Linq 中合并

c# - 如何从 C# (.net 3.5) 连接 Node.js 服务器

c# - 将文本框添加到 tablelayoutpanel 会导致文本框出现在 'random' 位置