2012-05-25 37 views
1

好,所以我有這個奇怪的問題,我已經搜索了很多次的答案,但無濟於事......反正我有這個問題,我似乎無法讓我的程序顯示錯誤當我想要的消息。這已經發生在很多場合,最終發現它的變量是空的,但是由於某種原因沒有發生錯誤?我不能讓我的C#程序崩潰嗎?

下面是我剛纔的一個例子。

人點擊一個按鈕來顯示一個稱爲調試的新窗體。

Debug debug = new Debug(); 
debug.Show(this); 

這是我的調試形式。

public new void Show(IWin32Window owner) 
{ 
    base.Show(owner); 
    Parent.Move += new EventHandler(delegate(object sender, EventArgs e) 
    { 
     Location = new Point(Parent.Location.X + Parent.Width, Parent.Location.Y); 
    }); 
} 

長話短說,代碼沒有工作,因爲家長是空,但它從來沒有暗示這就是問題所在。

我敢肯定有一些解釋,但我還沒有找到一個在我的谷歌搜索...

+0

你可以顯示'Parent'類的代碼嗎? –

+0

您是否調試並單步執行以Parent.Move開頭的行? 如果Parent爲空,它會拋出一個異常,你可以看到它結束的地方 –

+0

不,如果你有一個變量是一個對象的引用,並且該引用是null,那麼對該引用做任何事情都會導致在一個錯誤。如果您希望我們幫助您,那麼您需要顯示能夠產生有形內容的代碼。 –

回答

2

您也可以嘗試在Visual Studio中的以下內容:

  1. 調試>例外
  2. 展開「通用語言運行時例外」項
  3. 展開「系統」項
  4. 點擊複選框System.NullReferenceException
  5. 單擊確定
  6. 用附加的調試器運行您的應用程序。

它現在會導致調試器在拋出NullReferenceException時中斷。

我猜想你的應用程序被封裝在try {} catch {}中,或者在調用堆棧的某處,導致debug.Show()被調用,代碼被封裝在try {} catch {}