【问题标题】:Catch C# WPF unhandled exception in Word Add-in before Microsoft displays error message在 Microsoft 显示错误消息之前,在 Word 加载项中捕获 C# WPF 未处理的异常
【发布时间】:2012-08-20 08:24:21
【问题描述】:

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

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

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

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

您的应用程序中出现未处理的异常

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

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

【问题讨论】:

    标签: wpf exception-handling add-in dispatcher unhandled-exception


    【解决方案1】:

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

    【讨论】:

    • WinForms 插件是否也可以使用类似的方法? (即没有 WPF)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多