.net 如何在WPF应用程序中拦截NotImplementedException?

.net 如何在WPF应用程序中拦截NotImplementedException?,.net,wpf,exception,messagebox,notimplementedexception,.net,Wpf,Exception,Messagebox,Notimplementedexception,如何在WPF应用程序中拦截NotImplementedException 在测试正在进行的WPF应用程序时,我偶尔会抛出NotImplementedException: Private Sub ButtonDoSomething_Click(...) Handles ButtonDoSomething.Click Throw New NotImplementedException( _ "ButtonDoSomething_Click() not implemented.

如何在WPF应用程序中拦截NotImplementedException

在测试正在进行的WPF应用程序时,我偶尔会抛出NotImplementedException:

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)
但这似乎是不合法的,如果NotImplementedException被从接口中隐藏,那么它就不起作用


如何捕获所有此类异常并显示消息框?

您可以附加到应用程序类上的DispatcherUnhandledException事件,该事件将在发生未处理的异常时引发。在这里,您可以检查传递给事件处理程序的DispatcherUnhandledExceptionEventArgs实例上的Exception属性,查看它是否属于NotImplementedException类型。如果是,则将Handled属性设置为true,然后返回


应该注意的是,如果您调用MsgBox而不是抛出异常,那么您将遇到必须实际返回某些内容并设置所有out/ref参数的问题,这将是额外的开销

查看Application.dispatchernhandledexception或AppDomain.UnhandledException。两者都允许您处理其他未处理的异常。

您可以使用。例如:

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

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

True,但是,AppDomain.UnhandledException是AppDomain在检测到未处理的异常时引发的事件。无论你做什么,该应用程序都会立即关闭。