我有一个 C# 应用程序..我不断得到一个空引用异常..我设法捕获这个异常并记录它..但我怀疑这个异常是否会影响我的应用程序的性能..请注意,我不是想避免异常相反,如果连续触发此异常,我需要知道此异常是否会影响我的应用程序的性能。
问问题
241 次
4 回答
4
如果你得到一个NullReferenceException
,你应该修复它而不是抓住它。只有当它以您无法修复的方式出现在代码中时(例如损坏的第三方库),您才应该抓住它。ANullReferenceException
总是表示某处出现编程错误。
至于性能 - 这取决于您所说的“持续”是什么意思。如果在没有任何问题的情况下抛出异常可能会非常昂贵 - 如果使用得当,它们会很好。例如,您每秒看到多少个?请注意,在调试器中运行时,异常通常比未附加调试器时要昂贵得多。
与以往一样,当您担心性能时,您应该测试性能,这样您就可以使用硬数据做出决策。
于 2012-06-15T10:25:21.967 回答
0
异常被设计为在不抛出时将性能改变到最低限度:添加 try/catch 块对您的应用程序性能的影响应该非常有限。因此,我建议根据需要添加尽可能多的 try/catch 块,以在正确的级别捕获任何异常。
但是,抛出和捕获异常可能非常昂贵。应用程序必须切换上下文,在 using 块中处理任何元素......这就是我同意@Ramhound 的原因:你应该修复异常而不是捕获它。
于 2012-06-15T10:42:44.700 回答
0
这取决于您在哪里处理异常以及它们发生的频率。CodeProject 上有一篇关于异常和性能的好文章,我建议您阅读它。
于 2012-06-15T10:26:32.323 回答