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

C# CA2000:Microsoft.Reliability对象未沿所有异常路径处置,c#,visual-studio-2010,fxcop,C#,Visual Studio 2010,Fxcop,我在下面的方法中得到了代码分析错误 public static OracleCommand CreateStoredProcedureCommand(string name, OracleConnection connection) { return new OracleCommand(name, connection) { CommandTy

我在下面的方法中得到了代码分析错误

    public static OracleCommand CreateStoredProcedureCommand(string name,
                                                             OracleConnection connection)
    {
        return new OracleCommand(name, connection) { CommandType = CommandType.StoredProcedure };
    }
CA2000:Microsoft。可靠性:在方法中 'StoredProcedureHelper.CreateStoreProcedureCommand(字符串, OracleConnection“”,对象“command”未全部释放 异常路径。对对象“command”调用System.IDisposable.Dispose 在所有对它的引用超出范围之前


如果不抑制此操作,如何解决此问题?

从方法上看,处理对象的责任必须始终由调用方承担


您必须抑制它。

它不能,从方法来看,处理对象的责任必须始终由调用方承担


您必须抑制它。

当对属性的赋值引发异常时,对象不会被释放。试试这个:

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;
    }
}

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

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;
    }
}

正如Henrik所说,属性设置程序有可能抛出一个异常,使对象不被分解。正如Henrik所说,属性设置程序有可能抛出一个异常,使对象不被分解。