代码改变世界

你的代码进行!=null了吗?

2010-05-23 23:14  Kevin-wang  阅读(366)  评论(1编辑  收藏  举报

最近在一些项目中,发现系统运行日志中出现很多引发NullReferenceException异常的问题,或者就是明明是保存了但数据库中却找不到数据,经过对代码的分析总结一下发生这些问题的原因:
1.访问Cookie时未进行非null验证,往往都是直接从Cookie中取值;
   this.Request.Cookie[“userinfo”][“username”].ToString();
   改进:

  if(Request["userinfo"]!=null && Request["userinfo"]["username"]!=null)
{
//相关操作 }

2.方法中的string类型的参数未进行非null验证;
   public ShowMessage(string message)
   {
        message=string.Format(“…..",message);
        ……………
   }
改进:
public void ShowMessage(string message)
{
   if(!String.IsNullOrEmpty(message))
   {
     //操作
   }
}

3.类型转换字符串转为数字
   string _id=Request[“id”];
   int _num = int.Parse(_id);//不对传入的字符串进行验证就直接转换成数字
改进:
int _num=0;
string
_Id=Request["id"];
if
(int.TryParse(_Id,out _num)
{
   //相关操作
}

4.调用实体对象实例的属性时前未对实例进行非null验证;
   UserInfo _Info=GetUserInfo(…);
   if(_Info.UserName==”Admin”)  //在访问UserName前未对_Info验证
   {
       ……
   }
改进:
UserInfo _Info=GetUserInfo();
if(_Info!=null)
{
  //相关操作
}

总结完成,希望以后不要再发生类似的事情。