我有一个 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 中)
谢谢大家的帮助