`

减少恼人的NullPointerException

阅读更多

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的机会。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics