C# 实时 try catch

标签 c# real-time throw try-catch

我希望得到实际使用 C# 进行实时编程或真正了解语言内部结构的人的回复。

我知道异常不应该用来处理正常的处理,而只是用来检测错误情况。关于这个话题有很多讨论。

我想知道是否有任何运行时间减慢只是因为有一个 try/catch block (它永远不会捕获异常,除非程序无论如何都必须结束)。 try/catch block 位于必须重复调用的函数内。我怀疑成本很小。

能否根据 CPU 周期或其他任务(与浮点乘法相同的成本)或其他方式量化成本?

我们在windows XP下使用Microsoft C#.Net 3.5。

最佳答案

.NET 异常的开销成本非常非常低,除非它们被抛出。使用 try/catch block 对性能的影响非常小。我发现即使在非常快速、紧密的循环中,异常处理也几乎没有影响。

但是,.NET 中的异常在抛出时非常昂贵。如果你扔掉它们,它们往往会对性能产生比许多其他语言更大的影响。这是由于创建异常时收集到的完整堆栈信息等。

这与某些其他语言(例如 python)的行为相反,在这些语言中,异常处理的成本更高,但抛出实际上性能相当好。

但是,如果您担心,我建议您分析您的例程,然后自己测试。这是我在进行大量性能分析后的经验。在您自己的代码库中进行测量是不可替代的。

关于C# 实时 try catch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1347848/

相关文章:

node.js - 关于使用 websockets 和 node.js 编写可扩展的实时回合制策略游戏的建议

node.js - 当我使用 throw 语句时,有什么方法可以改变错误消息的颜色吗?

c++ - 如何避免在 catch block 中编写重复代码?

c# - SignalR Core - 从 WebAPI 检查连接状态

c# - 使用 DisplayFormat 注释限制为 url 显示的长度?

c - 如何为 program.c 创建 makefile 以及如何在实时应用程序接口(interface)中编译和执行

c - 具有实时优先级的 pthreads

c# - .NET库识别间距

c# - EF即使附加了父级也插入重复行

c++ - 是否可以同时抛出两个值?