CA2000:Microsoft.Reliability对象未沿所有异常路径放置

时间:2012-02-09 08:55:29

标签: c# visual-studio-2010 fxcop

我在下面的方法中遇到代码分析错误。

    public static OracleCommand CreateStoredProcedureCommand(string name,
                                                             OracleConnection connection)
    {
        return new OracleCommand(name, connection) { CommandType = CommandType.StoredProcedure };
    }
  

CA2000:Microsoft。可靠性:方法   “StoredProcedureHelper.CreateStoredProcedureCommand(字符串,   OracleConnection)',对象'命令'并未全部放置   异常路径。在对象'command'上调用System.IDisposable.Dispose   在所有引用都超出范围之前

如何在不压制这个的情况下解决这个问题?

2 个答案:

答案 0 :(得分:7)

当对属性的赋值抛出异常时,不会释放该对象。试试这个:

public static OracleCommand CreateStoredProcedureCommand(string name,
                                                         OracleConnection connection)
{
    OracleCommand result = new OracleCommand(name, connection);
    try
    {
        result.CommandType = CommandType.StoredProcedure;
        return result;
    }
    catch
    {
        result.Dispose();
        throw;
    }
}

答案 1 :(得分:0)

它不能,看着这个方法,处理对象的责任必须始终在于调用者。

你必须压制它。