【发布时间】:2011-07-01 18:52:25
【问题描述】:
我正在尝试修复一个我无法重现的错误(yipeee!)。我有最初发现问题的用户复制的堆栈跟踪,它显示代码在检查对象是否为空的行上抛出空引用异常(未处理)......就像这样:
private void someFunction()
{
radioButton1.CheckedChanged -= checkedChangedEventHandler
radioButton2.CheckedChanged -= checkedChangedEventHandler
if (someObject != null) // throws NullReferenceException...allegedly
{
if (someObject.Property == something)
{
// set properties on some UI components
}
}
}
什么样的条件会导致这种情况?
更新
添加了更多代码。 SomeFunction 方法被 checkedChanged 事件处理程序调用。
更新 2
堆栈跟踪一定是错误的,正如你们中的一些人所建议的那样。没有运算符重载,该方法仅引用四个不是 UI 组件(标签和单选按钮)的对象,所有这些对象在初始化时仅分配一次,并且在访问此代码之前被多次引用,因此任何在此之前会捕获空引用。我将不得不更仔细地查看调用事件处理函数。
这是一个解释错误行号的堆栈跟踪的线程:
【问题讨论】:
-
在您的错误跟踪器中标记它 norepro 并继续前进! =)
-
你能告诉我们堆栈跟踪吗?
-
是否有更多我们可以看到的代码?
-
您对当前版本的代码与堆栈跟踪匹配的信心如何?
-
有时可能会在实际抛出异常的行之后出现异常。你检查过上面的那行吗?
标签: c# .net nullreferenceexception