日期:2014-05-19  浏览次数:20565 次

做完一个网站,对网站运行代码进行分析,出现200个警告...请教高手!!
我写了一个
public   void   AddCount()
        {
                SqlConnection   cn   =   createCon();
                SqlCommand   cmd   =   new   SqlCommand( "AddCount ",   cn);
                cmd.CommandType   =   CommandType.StoredProcedure;
                try
                {
                        cn.Open();
                        cmd.ExecuteNonQuery();
                }
                catch   (Exception   ex)
                {
                        throw   ex;
                }
                Dispose(cn);
                return;
        }
的函数,它的警告是:
警告 3 CA2000   :   Microsoft.Reliability   :   修改   DB.AddCount():Void   以释放所有代码路径的类型为“ 'cmd '”的本地   SqlCommand。 e:\WebJake\App_Code\DB.cs 57 E:\WebJake\

还有:
警告 4 CA2200   :   Microsoft.Usage   :   DB.AddCount():Void   再次引发捕获的异常并将其显式地指定为一个参数。请改用不带参数的“throw”以保留该异常最初引发时所在的堆栈位置。 e:\WebJake\App_Code\DB.cs 51 E:\WebJake\


这是什么原因呢
俺是第一次做网站,请高手指点,谢谢



------解决方案--------------------
1、你没有释放cmd对象,IDE建议你显式释放cmd对象。
2、throw ex;应该这样写,直接写thorw;就行了!
------解决方案--------------------
如果你要释放资源建议用
using(SqlConnection cn = createCon())
{
try
{
cn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
}

------解决方案--------------------
第一个你没有显示销毁cmd
第二个IDE建议你直接用throw抛出错误,而不需要再加ex
------解决方案--------------------
实际上你就算显示调用cmd.Dispose();系统也不会立刻销毁掉,系统都是在一定时间里才会清理一次