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