我有以下代碼:無法處理System.Data.SqlTypes.SqlNullValueException
public string getFinalCon(string desid)
{
string finalConId = null;
try
{
query = "select finalConID from discussions where [email protected]";
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塊捕獲,並且函數應該返回在函數開始時聲明的NULL的默認值NULL。但是這並沒有發生,而是顯示了我的錯誤頁面。我打電話這樣的功能是這樣的:
string conid = getFinalCon(Request["id"].ToString());
if (conid == null)
{ /*---some code---*/}
else
{/*---some code---*}
請任何人告訴我如何處理這個異常。
感謝它的工作和我想要的另一件事問。我們如何預測異常將會發生?由於這個原因,我使用Exception類來捕獲異常。我之前和你說過的一樣。但是,由於持續的例外,這讓我感到惱火,所以我只是去抓'Exception'異常。 –
如果您收到異常,那麼您需要弄清楚原因。正如我所說的,忽略例外是非常糟糕的做法。一個例外需要被調查,而不是被忽略。 – cdhowie