C# 打开表单前出现未知异常

C# 打开表单前出现未知异常,c#,.net,C#,.net,以下代码中出现异常。你能告诉我这个密码有什么问题吗?打开表单需要时间。在打开表单之前,catch块中会显示一个消息框。我的数据库正在运行,但我不知道为什么运行不平稳? 请引导 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using

以下代码中出现异常。你能告诉我这个密码有什么问题吗?打开表单需要时间。在打开表单之前,catch块中会显示一个消息框。我的数据库正在运行,但我不知道为什么运行不平稳? 请引导

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace IMS
{
public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    // To set up a connection object
    System.Data.SqlClient.SqlConnection con;
    System.Data.OleDb.OleDbDataAdapter da;
    private void Form2_Load(object sender, EventArgs e)
    {
        con = new System.Data.SqlClient.SqlConnection(); 
        // TODO: This line of code loads data into the 'iMSDataSet1.Part_Group'
        //table. You can move, or remove it, as needed.
        this.part_GroupTableAdapter.Fill(this.iMSDataSet1.Part_Group);


        con.ConnectionString = "Data     Source=.\\DataDirectory\\IMS.sdf;Password=ims;Persist Security Info=True";
        //open up a connection to the database
        try
        {
            con.Open();
        }
        catch
        {
            MessageBox.Show("Database Exception");
        }
        //Close up a connection to the database
        con.Close();

    }

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {

    }

    private void AddPartGroup_Click(object sender, EventArgs e)
    {
        System.Data.OleDb.OleDbCommandBuilder cb;
        cb = new System.Data.OleDb.OleDbCommandBuilder(da);

        //DataRow dRow = 
    }
}
}

嗯,您需要改变处理异常的方式。这:

catch
{
    MessageBox.Show("Database Exception");
}
这不是很有用。它不仅捕获所有异常(而不仅仅是特定的异常);它忽略了异常本身。至少,使用类似于:

catch(Exception e)
{
    MessageBox.Show("Database Exception: " + e.Message);
    // Now log e.ToString() somewhere as well
}
这将帮助你找出哪里出了问题。顺便说一句,我会尽量不在UI线程中执行数据库操作,您通常应该只捕获特定的异常,但最直接的更改应该是停止忽略正在抛出的异常中的有用信息


请注意,在捕捉到异常后,您将继续操作,就好像没有什么问题一样——实际上,这听起来很可能是一个致命错误,应用程序的其余部分很快就会失败。您可能应该强制应用程序在此时关闭(有适当的解释),而不是试图在中断状态下继续。(其他选项包括重试失败的操作等-重要的是不要像一切正常一样继续。)

感谢Jon的回复。异常引发以下错误“数据库异常建立与SQL Server的连接时发生网络相关或特定于实例的错误。找不到或无法访问该服务器。请验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:SQL网络接口,错误:26-定位指定的服务器/实例时出错)我正在阅读本教程。请解释一下这意味着什么?我应该做什么?@m3nhaq:好吧,异常会准确地告诉您应该尝试做什么-验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。SQL Studio是否允许您使用指定的连接字符串进行浏览?B基本上,在您解决了如何连接到数据库之前,您将无法执行任何其他操作,而这与您的实际代码没有任何关系。