visual studio 2012 c#捕获异常错误

visual studio 2012 c#捕获异常错误,c#,C#,我在母版页中的c#编码如下 DBLayer odb = new DBLayer(); SqlDataReader dr; DataSet ds = new DataSet(); protected void Page_Load(object sender, EventArgs e) { if (DropDownList1.SelectedItem.ToString() == "Commercial") { bind1(); } else i

我在母版页中的c#编码如下

DBLayer odb = new DBLayer();

SqlDataReader dr;

DataSet ds = new DataSet();

protected void Page_Load(object sender, EventArgs e)
{
    if (DropDownList1.SelectedItem.ToString() == "Commercial")
    {

        bind1();
    }
    else if (DropDownList1.SelectedItem.ToString() == "Residential")
    {
        bind2();
    }
    else
    {
        bind3();
    }
}
public void bind1()
{
    string query = "select * from commercialproperty";
    dr = odb.SelectMethod(query);
    if (dr.Read())
    {
        Label11.Text = dr[0].ToString();
        Label1.Text = dr[1].ToString();
        Label2.Text = dr[2].ToString();
        Label3.Text = dr[3].ToString();
        Label4.Text = dr[4].ToString();
        Label5.Text = dr[5].ToString();
        Label6.Text = dr[6].ToString();
        Label7.Text = dr[7].ToString();
        Label8.Text = dr[8].ToString();
        Label9.Text = dr[9].ToString();
        Label10.Text = dr[10].ToString();
    }
    else
    {
        Response.Write("<script>alert('Record Not Found')</script>");
    }
}
}

当我运行网站时,它会在以下几点爆炸, if(dr.Read())[错误消息:对象引用未设置为对象的实例。]

我错过了什么?我是一个初学者:P帮助解决这个问题将使网站运行得非常好
谢谢

我不知道您的代码中的
odb
是什么,但关键是
SelectMethod
返回空值

编辑后,罪魁祸首似乎是
SelectMethod
中的try/catch块:可能引发了异常,由于您对此不做任何处理,您无法理解出了什么问题:

try {
    // do DB stuff...
}
catch (Exception sm) { // What does this exception contain???
    _SqlDataReader = null;
}

尝试使用调试器单步输入代码,并查看异常情况。如果您不能做到这一点,只需删除catch块:正如您所看到的,它只是隐藏了原因的失败,但并不能使代码神奇地工作:)

我在您的代码中看到了至少4个问题 1.你沉默地在代码中吞下你的异常,没有任何意义

try
    {
        _SqlConnection = new SqlConnection("server=.;user id=sa;password=sa;initial catalog=RealEstate");
        _SqlConnection.Open();
        _SqlCommand = new SqlCommand(query, _SqlConnection);
       _SqlDataReader  = _SqlCommand.ExecuteReader();
    }
    **catch (Exception sm)
    {
     _SqlDataReader = null;
    }**
二,。在关闭连接之前,您已释放了连接,异常将在最后一个窗口中抛出

finally
    {
        _SqlConnection.Dispose();               
        _SqlConnection.Close();
    }
三,。吞下异常而什么也不做不是最好的预防措施,因为您丢失了堆栈跟踪

4在没有实现IDisposable的情况下,将_sqlconnection和那些非托管对象设置为全局变量是不好的


最后在出现异常的代码行上设置一个断点,并尝试自己调试代码。

什么是
odb
当它的
SelectMethod(string)
函数结果
null
?下面是一个从SQL数据库读取的好例子:。这可能会有帮助。买本书你还有很长的路要走。。。你需要打开与连接字符串的连接如果有人有时间给我,我可以把项目邮寄给他们检查,如果可能的话?非常需要帮助我现在很困惑如果有人有时间给我,我可以把项目邮寄给他们,如果可能的话检查一下吗?急需帮助我对此很困惑point@LeachimHca:查看我的最新答案。顺便问一下,你能(而且你知道如何)调试你的代码吗?如果你做不到,就删除catch块:如果只是删除catch块就不行。@ConradFrix:我不理解你的评论。。。我想说的是,如果他删除try/catch,他会以某种方式看到异常详细信息…@PaoloTedesco我建议应该删除catch块,不管OP是否知道如何查看捕获的异常的详细信息。
finally
    {
        _SqlConnection.Dispose();               
        _SqlConnection.Close();
    }