WPF - 未捕获异常?

时间:2011-12-09 17:48:57

标签: wpf exception

我正在尝试在WPF中实现登录窗口。

我有一个MainWindow.xaml:

<Window ...
    Closing="Window_Closing">
    ...

然后在MainWindow.xaml.cs:

private void Window_Loaded(object sender, RoutedEventArgs e) {
    LoginWindow loginWindow = new LoginWindow();
    loginWindow.Owner = this;
    loginWindow.ShowDialog();
    ...

在LoginWindow构造函数中,我抛出一个异常。它永远不会被抓住。

如果我在一个try / catch块中包装Window_Loaded的内容,我可以捕获异常,但是如果我从Window_Load()中重新抛出它,它就永远不会被捕获。

这对我来说似乎很奇怪。我想我已经习惯了未被捕获的异常会杀死应用程序的环境。在WPF中,我需要做些什么才能启用它?

1 个答案:

答案 0 :(得分:1)

使用此构造将恢复可见性的异常,并允许您在x86构建的CurrentDomain_UnhandledException方法中捕获它...

    void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        Loaded -= MainWindow_Loaded;
        AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
        Dispatcher.BeginInvoke(DispatcherPriority.Loaded, (SendOrPostCallback) delegate
        {
            Login l = new Login {Owner = this};
            l.ShowDialog();
        }, new object[] {null});
    }