你的代码进行!=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))
{
//操作
}
}
{
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)
{
//相关操作
}
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)
{
//相关操作
}
if(_Info!=null)
{
//相关操作
}
总结完成,希望以后不要再发生类似的事情。