搜索墙首页  编程技术  java  asp  ajax  php  c/c#/c++  数据库  oracle  mysql  db2  操作系统  windows  linux  股吧
首页 > 编程 > java > 编程博客
 1         
1楼   2008-11-09

1字符串变量未初始化;
2接口类型的对象没有用具体的类初始化,比如:
List lt;会报错
List lt = new ArrayList();则不会报错了
3当一个对象的值为空时,你没有判断为空的情况。
如果你去操作这个对象就会出现java.lang.NullPointerException ?
? 我一般的做法是先判断这个对象是否为空,如下: ?
? if(object!=null){ ?
? ? ? ? ? ....... ?
? }

?

例子

String str1 = someclass.getSomeString();

if(str1.equalsIgnoreCase("YES"))
{
? ?//do something
}
else if(str1.equalsIgnoreCase("NO"))
{
??//do something else
}[/code]

这段代码从逻辑上看没有错,但是却有发生NullPointer的隐患,主要在于
String str1 = someclass.getSomeString();
可能导致str1 为null,常见的有
props.getProperty("somekey");
map.get("key");
bean.getName();
等等,这里发生NullPointerException的机会非常大,而且运行情况往往和用户输入的数据有关,所以不容易被发现,常常是开发的时候没问题,一旦送到用户那里去运行了就出问题了。

正确的方法应该是
[code]
String str1 = something;
if("YES".equalsIgnoreCase(str1))
{
? ?//do something
}
else if("NO".equalsIgnoreCase(str1))
{
??//do something else
}[/code]
这样就保证了你调用equalsIgnoreCase() 的主体永远也不是null,即使str1等于null,也不会导致程序出错,且从逻辑上讲也是正确的,就大大减少了Exception的机会。

 1         
您的发言将按有关规定都会存档,您须为所发表后果负责,请您遵纪守法并注意语言文明。
标题:减少恼人的NullPointerException
热门关注
标题回复点击
数据库连接字符串大全(转)02325
福州地铁最新规划图,1号线2014年建成01435
UML建模工具Rational Rose 2007 破解 下载地址2928
mysql 语法手册 chm 下载0833
e的精确值是多少?[z]3766
Struts Menu开发向导0758
驱动 EPSON TM-U220PDmodel m188d ATM 301gSC 下载3736
Nginx 0.7.x + PHP 5.2.8(FastCGI)搭建胜过Apache十倍的Web服务0735
400多个JavaScript特效大全0722
VMware Workstation 5.5.1 19175+序列号0689
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源