开发了一些Java应用后,发现空指针异常是个很头疼的问题,明明自己在本地已经调试OK了,可是代码在其他环境会莫名其妙的报错,而且还很难定位到具体的异常位置。
空指针异常产生的原因,大概是以下几点原因:
1、把null值当做一个对象来使用
User user = getUser();
user.getName(); // 若user对象为null,这里会抛空指针异常
2、把null值传递给一个方法
class Utils
{
public String parse(String host);
}
String host = httpRequest.getHost();
Utils utils = new Utils();
utils.parse(host); // parse方法期待一个String类型,若host为null,可能会抛空指针异常
了解了产生原因,就容易找到应对方法了。我总结了以下编码原则,来尽量避免空指针异常。
1、使用对象前,先判断对象是否为null。
User user = getUser();
if (user == null) {
user = new User();
}
user.getName();
2、编写一个方法时,校验参数是否为null。
class Utils
{
public String parse(String host)
{
if (host == null) {
return "";
}
}
}
String host = httpRequest.getHost();
Utils utils = new Utils();
utils.parse(host);