visual studio 2012 c#捕获异常错误
我在母版页中的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
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();
}