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所说,属性设置程序有可能抛出一个异常,使对象不被分解。