当我调试我的应用程序时,我得到了很多InvalidOperationException和NullReferenceException,如下所示:
A first chance exception of type 'System.NullReferenceException' occurred in XGen.Framework.DLL
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.NullReferenceException' occurred in XGen.Framework.DLL
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.NullReferenceException' occurred in XGen.Framework.DLL
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.NullReferenceException' occurred in XGen.Framework.DLL
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.NullReferenceException' occurred in XGen.Framework.DLL
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.NullReferenceException' occurred in XGen.Framework.DLL
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll
A first chance exception of type 'System.NullReferenceException' occurred in XGen.Framework.DLL
它会使应用程序变慢吗?
编辑:
找到发生InvalidOperationException的地方
public static Value.Locale Get(string value)
{
try
{ return _Items.First(itm => itm.ID.ToUpper() == value.ToUpper() || itm.Name.ToUpper() == value.ToUpper()); }
catch (Exception)
{ return new XGen.Framework.Value.Locale(); }
}
翻译文本:序列不包含任何元素匹配
我应该检查_Items.Count> 0?
答案 0 :(得分:3)
它不可能使你的应用程序更快,所以是的,它会使它变慢,但当然“慢”是相对的。我会更关心的是,这些异常是由于应用程序中的逻辑错误导致的,而不是它运行的速度。
答案 1 :(得分:2)
如果他们不让你的程序变慢,那么它们应该是特殊的。
如果您知道_items可以为空且不是例外,那么这是正常的流程,并且不应该使用异常处理它。
您可以查看点数,或只拨打FirstOrDefault
而不是First
...
答案 2 :(得分:1)
你必须开始缩小它们,以弄清楚发生了什么。我的猜测是因为这个XGen.Framework.DLL做了一些不好的事情(在System.Core中导致InvalidOperationException),但是为你优雅地处理它,这就是应用程序继续运行的原因。
您可以告诉调试器在第一次更改异常时停止,并检查堆栈跟踪。
答案 3 :(得分:1)
从Jon Skeet看到这个答案,他觉得他们在合理使用时不会减慢应用程序的速度,但是你的情况似乎并不正常:
如果您遇到异常严重的问题 伤害你的表现,你在使用方面遇到了问题 超出绩效的例外。
答案 4 :(得分:0)
first chance exception
意味着代码中有些异常被抛出但被捕获和处理。在你的情况下,你会得到很多NullReferenceException
和InvalidOperationException
,其中大部分时间都在某处显示错误(属性或字段未初始化,调用处于无效状态的对象)。所以我不会太担心速度,而是更关心你的正确性。