如何拦截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被隐藏在接口之外,那么这似乎是不合适的,并且不会起作用。
如何捕获所有此类异常并显示消息框?
答案 0 :(得分:6)
您可以附加到Application类上的DispatcherUnhandledException事件,该事件将在发生未处理的异常时生成。在那里,您可以检查传递给事件处理程序的DispatcherUnhandledExceptionEventArgs实例上的Exception属性,以查看它是否为NotImplementedException类型。如果是,则将Handled属性设置为true,然后返回。
应该注意的是,如果你调用MsgBox而不是抛出异常,你就会遇到必须实际返回一些东西并设置所有out / ref参数的问题,这可能是额外的开销。
答案 1 :(得分:3)
查看Application.DispatcherUnhandledException或AppDomain.UnhandledException。两者都允许你处理其他未处理的异常。
答案 2 :(得分:0)
您可以使用Debug.Fail,而不是抛出NotImplementedException或使用MessageBox。例如:
Debug.Fail("This method is not implemented yet!");
它将弹出一个带有您提供的文本的消息框,并显示堆栈跟踪。