在Microsoft显示错误消息之前,在Word外接程序中捕获C#WPF未处理的异常



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

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

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

我可以使用Dispatcher.CurrentDispatcher.UnhandledException并向其添加DispatcherUnhandledExceptionEventHandler。这工作,并且捕获异常。然而,微软显示

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

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

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

在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就不会处理异常。

最新更新