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

时间:2009-02-12 15:59:36

标签: .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

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

我可以用:

替换所有这些异常抛出
MessageBox.Show("ButtonDoSomething_Click() not implemented.", _
    "Not Implemented", MessageBoxButton.OK, MessageBoxImage.Information)

但是,如果NotImplementedException被隐藏在接口之外,那么这似乎是不合适的,并且不会起作用。

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

3 个答案:

答案 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!");

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