【问题标题】:.net letting window know of unhandeled exception.net 让窗口知道是否有未处理的异常
【发布时间】:2014-10-16 08:58:11
【问题描述】:

我想知道在调度程序启动之前是否有任何方法让您的窗口 (wpf) 知道未处理的异常?

原因: - 我在 application.xaml.vb 中有一个全局未处理的代码。这将打开一个包含 StackTrace 信息的特殊窗口。 - 在窗口级别,我有一个用户控件,我想根据消息更改属性。现在我通常通过尝试/捕获来做到这一点,但是通过这样做,我将处理异常,因此特殊的 msgbox 将永远不会显示。

有什么方法可以让异常不被处理,并在调度程序启动之前让窗口知道问题?如果有,怎么做?

应用程序 - 开始 窗口 - 打开 抛出异常的代码()

【问题讨论】:

  • 捕捉到异常后直接抛出即可。
  • 试过了,但应用程序认为它被捕获了。基本上如果它进入捕获,它被捕获(处理)。无论如何要放 ex.handled = false 吗?
  • 我从未听说过异常的捕获状态。也许如果你给我们看一些代码会有所帮助。

标签: .net wpf vb.net exception-handling


【解决方案1】:

您的问题不是很清楚,但我认为您想捕获未处理的Exceptions,以便您可以在应用程序关闭之前执行一些工作。如果正确,那么您可以尝试处理AppDomain.UnhandledException event

public void MainWindow_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    Exception exception = (Exception)e.ExceptionObject;
    Error error = new Error(exception, mainViewModel.StateManager.CurrentUser);
    // log error
    mainViewModel.AddError(error); 
}

【讨论】:

  • 如果 mainwindow_unhandledexception() 你的意思是应用程序事件,那么是的,这已经完成了。我的问题是在窗口级别,我想“听到”未处理的异常并做一些小的 ui 更新,然后让应用程序事件运行。
  • 未处理的Exception 无法在以后处理。这是一个Exception关闭您的应用程序。这些Exceptions 将被此处理程序捕获,并在记录错误后,应用程序将关闭。
猜你喜欢
  • 2018-12-24
  • 2022-01-19
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 2011-11-25
  • 2011-01-13
  • 1970-01-01
相关资源
最近更新 更多