2009-02-12 52 views
0

如何截取WPF應用程序中的NotImplementedException?如何在WPF應用程序中攔截NotImplementedException?

我會偶爾拋出一個NotImplementedException在測試我正在進行的WPF應用程序:

Private Sub ButtonDoSomething_Click(...) Handles ButtonDoSomething.Click 
    Throw New NotImplementedException(_ 
     "ButtonDoSomething_Click() not implemented.") 
End Sub 

但是,我寧願那些不引起程序崩潰。

我可以取代所有這些例外投用:

MessageBox.Show("ButtonDoSomething_Click() not implemented.", _ 
    "Not Implemented", MessageBoxButton.OK, MessageBoxImage.Information) 

但是,不知怎的,似乎inellegant如果NotImplementedException被埋葬離開界面是行不通的。

如何捕獲所有這些異常並顯示消息框?

回答

6

您可以附加到Application類上的DispatcherUnhandledException事件,這會在任何時候發生未處理的異常時引發。在那裏,您可以檢查傳遞給事件處理程序的DispatcherUnhandledExceptionEventArgs實例的Exception屬性,以查看它是否爲NotImplementedException類型。如果是,則將Handled屬性設置爲true,然後返回。

需要注意的是,如果您調用MsgBox而不是拋出異常,那麼您將遇到實際返回某些內容並設置所有out/ref參數的問題,這會產生額外的開銷。

3

查看Application.DispatcherUnhandledException或AppDomain.UnhandledException。兩者都允許您處理其他未處理的異常。

+0

不過,AppDomain.UnhandledException是由AppDomain在檢測到未處理的異常時引發的事件。無論你做什麼,該應用程序將立即關閉。 – 2009-02-12 21:25:40

0

您可以使用Debug.Fail來代替拋出NotImplementedException或使用MessageBox。例如:

Debug.Fail("This method is not implemented yet!"); 

它會彈出一個消息框,其中包含您提供的文本並顯示堆棧跟蹤。

相關問題