在Microsoft显示错误消息之前,在Word加载项中捕获C#WPF未处理的异常

问题描述 投票:2回答:1

我正在使用C#和WPF开发Microsoft Word加载项。

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

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

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

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

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

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

wpf exception-handling add-in dispatcher unhandled-exception
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.