【发布时间】:2012-11-14 18:32:36
【问题描述】:
我有以下代码:
public string getFinalCon(string desid)
{
string finalConId = null;
try
{
query = "select finalConID from discussions where desid=@did";
com = new SqlCommand(query, con);
com.Parameters.AddWithValue("@did", desid);
con.Open();
sdr = com.ExecuteReader();
while (sdr.Read())
{
if (sdr.GetString(0).Equals("none") == false && sdr.GetString(0)!=null)
{
finalConId = sdr.GetString(0);
break;
}
}
con.Close();
}
catch (Exception)
{
}
return finalConId;
}
如您所见,我正在捕获“异常”,即全局异常。但是问题是,每当执行finalConId=sdr.GetString(0)这行代码时,系统就会抛出System.Data.SqlTypes.SqlNullValueException。是的,只要数据库中相应字段的值为 NULL,它肯定会抛出它。但我想要的是这个异常应该被 catch 块捕获,并且函数应该返回 finalConId 的默认值,即函数启动时声明的 NULL。但这并没有发生,而是显示了我的错误页面。我这样调用这个函数:
string conid = getFinalCon(Request["id"].ToString());
if (conid == null)
{ /*---some code---*/}
else
{/*---some code---*}
请任何人告诉我如何处理此异常。
【问题讨论】:
标签: c# asp.net sql-server-2008 null sqlexception