首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS2010:代码分析警告CA2000。对象不是沿所有异常路径释放的。

VS2010:代码分析警告CA2000。对象不是沿所有异常路径释放的。
EN

Stack Overflow用户
提问于 2011-02-07 14:43:43
回答 2查看 2.3K关注 0票数 1

在编写好代码的目标中,我使用“运行代码分析”在Visual 2010中验证了我的项目。在下面的函数中,我得到了以下警告,但我不明白,因为唯一可以生成异常的行是sqlC.ExecuteNonQuery(),而只包含异常类型"SQLException“。

CA2000 : Microsoft.Reliability :在方法Company.log( string,string,DateTime,DateTime,string,bool)中,对象'sqlC‘不是沿所有异常路径释放的。在所有对对象的引用超出作用域之前,在对象'sqlC‘上调用sqlC。

为什么分析会抱怨?任何帮助都是非常感谢的!

代码语言:javascript
复制
    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();
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-07 14:46:28

去读关于using blocks的文章

如果用using编写,这段代码将变得更短、更正确。

有几种方法可以使异常在不正确配置sqlC的情况下转义函数。.NET使用半同步异常模型,实际上任何行的托管代码都可以抛出(例如,ThreadAborted异常)。或者sqlC.ExecuteNonQuery()可以抛出另一种类型的异常。

票数 7
EN

Stack Overflow用户

发布于 2011-02-07 14:53:27

考虑到您只捕获一个异常(即使随后重新抛出它)-在发生任何异常时,在try/catch块执行后不会出现任何异常。异常中断正常流,因此在执行异常后没有任何异常。(除非它位于catch块中,用于正确的异常类型,或者是一个最终块.)

如果希望确保代码总是在尝试/捕获之后执行,请在块末尾使用finally

但是在IDisposable对象的情况下,正如Ben所说,using块为您处理这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4922563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档