在我的目標中,我使用「運行代碼分析」在Visual Studio 2010中驗證了我的項目。在下面的功能我得到以下警告,我不明白,因爲這會產生一個異常的惟一行sqlC.ExecuteNonQuery(),與只有異常類型「的SQLException」。VS2010:代碼分析警告CA2000。對象不會沿着所有異常路徑排列
CA2000:Microsoft.Reliability:在方法 'Company.log(字符串,字符串,日期時間,日期時間,字符串布爾)',對象 'SQLC' 不是沿着所有的異常路徑設置。在所有對它的引用超出範圍之前,調用System.IDisposable.Dispose對象'sqlC'。
爲什麼分析會抱怨?任何幫助深表感謝!
private void log(string type, string descr, DateTime start, DateTime end, string msg, bool success)
{
SqlCommand sqlC = new SqlCommand();
sqlC.CommandType = CommandType.Text;
sqlC.Connection = sc;
sqlC.CommandText = "INSERT INTO [cap_jobHistoryDetails] (...) VALUES(...)";
sqlC.Parameters.AddWithValue("@jobID", _job_id.ToString("d", CultureInfo.InvariantCulture));
sqlC.Parameters.AddWithValue("@type", type);
sqlC.Parameters.AddWithValue("@start", start);
sqlC.Parameters.AddWithValue("@end", end);
sqlC.Parameters.AddWithValue("@descr", descr);
sqlC.Parameters.AddWithValue("@msg", msg);
sqlC.Parameters.AddWithValue("@success", (success ? "1" : "0"));
try
{
sqlC.ExecuteNonQuery();
}
catch (SqlException)
{
sqlC.Dispose();
throw;
}
sqlC.Dispose();
}
哦,我現在在笑!你不僅解決了問題,而且使代碼更加美麗。 – David 2011-02-07 15:04:33