我有一个C#应用程序..我不断得到一个空引用异常..我设法捕获这个异常并记录它。但我怀疑这个异常是否会影响我的应用程序的性能..请注意我是我没有试图避免异常,而是需要知道如果持续触发此异常会影响我的应用程序的性能。
答案 0 :(得分:4)
如果您收到NullReferenceException
,则应该修复而不是捕获它。如果代码以无法修复的方式出现(例如,破坏的第三方库),则应该只捕获它。 NullReferenceException
始终表示编程错误某处。
至于表现 - 它取决于你所说的“连续”。如果在没有真正错误的情况下抛出异常,例外可能会非常昂贵 - 如果使用得当,它们就会很好。例如,你每秒看到多少人?请注意,在调试器中运行时,异常通常比未附加调试器时要昂贵得多。
与以往一样,当您担心性能时,您应该测试性能,这样您就可以使用硬数据做出决策。
答案 1 :(得分:0)
这取决于您处理异常的位置以及它们发生的频率。关于例外和性能的CodeProject上有一篇很好的文章,我建议你阅读it。
答案 2 :(得分:0)
答案 3 :(得分:0)
异常被设计为在不抛出性能时将性能降至最低:添加try / catch块对应用程序性能的影响非常有限。 因此,我建议添加尽可能多的try / catch块来捕获正确级别的任何异常。
然而,抛出和捕获异常可能非常昂贵。应用程序必须切换上下文,处理使用块中的任何元素......这就是我同意@Ramhound的原因:你应该修复异常而不是捕获它。