奇怪的未经处理的WPF异常

我有一个WPF应用程序,我要求用户连接到数据库的一些设置,而不是连接到数据库(使用NHibernate),如果一切正常,我显示我的主视图。 如果连接出现错误,我想告诉用户错误是什么,并让他重试。 这里有一些简单的代码正在做我想做的事情:

编辑:

看来问题不仅在于NHibernate。 如果我只是在这里运行简单的应用程序,我会在构造函数中得到未处理的异常。

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        bool retry;

        do
        {
            retry = false;
            Window1 view = new Window1();

            try
            {
                throw new Exception("Test message");
                view.ShowDialog();
            }
            catch (Exception iException)
            {
                MessageBox.Show(iException.ToString());
                retry = true;
            }
            finally
            {
                view.Close();
            }
        }
        while (retry);
    }
}

我得到和未处理的异常,它给了我我的测试消息,所以它确实是我的异常(即使它在try / catch块内)。 如果我在得到异常时中断,它会告诉我它发生在Window1的构造函数中。 Window1不包含任何绑定或控件。 它只是在Visual Studio 2008中创建新的WPF应用程序时创建的基本Window1。我在2台计算机上再现了此错误(只需创建一个新的WPF应用程序并将此代码粘贴到App.xaml.cs中)

谢谢大家的帮助


我通过创建窗口一次(在循环之前)解决了这个问题。 不是在finally块中关闭它,而是调用Hide,并且仅在循环后关闭它。


可能会发生任何数量的异常,并且不会发布异常详细信息,这很难诊断。

如果我猜测,我的猜测是那个view.Close()抛出,因为你说它没有被捕获。


尝试在你的catch语句中调用session.clear()。

Nhibernate将继续缓存SQL,直到写入数据库(刷新)。 如果你有问题(例外),它不会在发生异常时抛出它,而是会话被刷新(当它试图将SQL写入数据库时​​)。

发布NHibernate异常,我可以在这方面取得成功。

链接地址: http://www.djcxy.com/p/51231.html

上一篇: Weird unhandled exception with WPF

下一篇: Exception handling in WPF data binding