3

我正在使用 C# 和 WPF 开发 Microsoft Word 插件。

在我的一个窗口中,一个助手类在事件中引发异常。我希望异常冒泡到窗口级别,以便我可以捕获它并向用户显示错误消息。因为它在帮助程序类中的一个事件中,所以我不能只在窗口代码中用一个 try/catch 块来包围一个方法调用来捕获它。

Application.Current 返回 null,因此我无法使用 Application Dispatcher。

我可以使用Dispatcher.CurrentDispatcher.UnhandledException并添加一个DispatcherUnhandledExceptionEventHandler。这有效并且异常被捕获。但是,微软显示

您的应用程序中发生未处理的异常

调用我的事件处理程序之前的错误消息。

我是在尝试以错误的方式解决此问题,还是有办法抑制 Microsoft 未处理的异常错误消息?

4

1 回答 1

3

在 Microsoft Word 捕获异常并引发未处理的异常消息之前,使用 UnhandledExceptionFilter 捕获异常。

Dispatcher.CurrentDispatcher.UnhandledExceptionFilter += 
  new DispatcherUnhandledExceptionFilterEventHandler(Dispatcher_UnhandledExceptionFilter);

void Dispatcher_UnhandledExceptionFilter(object sender, DispatcherUnhandledExceptionFilterEventArgs e)
{
  e.RequestCatch = false;
  // Display error message or close the window.
}

确保将 RequestCatch 设置为 false,以便 Word 不处理异常。

于 2012-08-27T19:52:48.007 回答