私は次のコードを持っています:
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ブロックによってキャッチされ、関数が関数の開始時に宣言されたNULLであるfinalConIdのデフォルト値を返す必要があることです。しかし、これは発生していません。代わりに、エラーページが表示されます。私はこの関数を次のように呼び出しています:
string conid = getFinalCon(Request["id"].ToString());
if (conid == null)
{ /*---some code---*/}
else
{/*---some code---*}
この例外の処理方法を教えてください。