如何拦截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从界面中隐藏起来,那么这似乎不合时宜并且不起作用.
如何捕获所有此类异常并显示消息框?
您可以附加到Application类上的DispatcherUnhandledException事件,该事件将在发生未处理的异常时生成.在那里,您可以检查传递给事件处理程序的DispatcherUnhandledExceptionEventArgs实例上的Exception属性,以查看它是否为NotImplementedException类型.如果是,则将Handled属性设置为true,然后返回.
应该注意的是,如果你调用MsgBox而不是抛出异常,你就会遇到必须实际返回一些东西并设置所有out/ref参数的问题,这可能是额外的开销.