如何拦截WPF应用程序中的NotImplementedException?

Zac*_*son 0 .net wpf exception messagebox notimplementedexception

如何拦截WPF应用程序中的NotImplementedException?

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

Private Sub ButtonDoSomething_Click(...) Handles ButtonDoSomething.Click
    Throw New NotImplementedException( _
        "ButtonDoSomething_Click() not implemented.")
End Sub
Run Code Online (Sandbox Code Playgroud)

但是,我宁愿这些也不会让程序崩溃.

我可以用以下内容替换所有此类异常抛出:

MessageBox.Show("ButtonDoSomething_Click() not implemented.", _
    "Not Implemented", MessageBoxButton.OK, MessageBoxImage.Information)
Run Code Online (Sandbox Code Playgroud)

但是,如果将NotImplementedException从界面中隐藏起来,那么这似乎不合时宜并且不起作用.

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

cas*_*One 6

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

应该注意的是,如果你调用MsgBox而不是抛出异常,你就会遇到必须实际返回一些东西并设置所有out/ref参数的问题,这可能是额外的开销.