2011-07-01 88 views
2

我試圖修復一個我無法重現的bug(yipeee!)。我有最初發現問題的用戶複製的堆棧跟蹤,它顯示代碼在檢查對象爲null的行上顯示空引用異常(這是未處理的)。如下所示:對條件空值檢查的NullReferenceException?

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 
     } 
    } 
} 

什麼樣的情況可能導致這種情況?

UPDATE

增加了一些更多的代碼。 SomeCunction方法被checkedChanged事件處理程序調用。作爲你們幾個建議

更新2

堆棧跟蹤一定是錯誤的。沒有操作符重載,並且該方法僅引用四個不是UI組件(標籤和單選按鈕)的對象,並且所有這些對象在初始化時僅分配一次,並且在獲取此代碼之前多次引用,因此任何在此之前,null引用將被捕獲。我將不得不更仔細地查看調用事件處理函數。

這裏是一個線程解釋與錯行號的堆棧跟蹤:

Wrong line number on stack trace

+0

馬克它norepro在你的bug跟蹤系統,繼續前進! =) – Yuck

+1

你能告訴我們堆棧跟蹤嗎? –

+0

有更多的代碼可以看到嗎? – SirPentor

回答

3

兩個最有可能的候選人是:

  1. 的重載=運算造成破壞(雖然你會覺得堆棧跟蹤顯示。)
  2. 的堆棧跟蹤錯誤的,你需要更多的信息前進。

我覺得2更有可能。

+0

看起來它必須是#2。如果我真的找到原因,我會發布更新。 – alexD