2009-02-12 29 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!"); 

它会弹出一个消息框,其中包含您提供的文本并显示堆栈跟踪。

相关问题