您的位置:首页 > 其它

为什么simpleDateFormat.format(null)会报空指针异常

2018-11-21 13:00 197 查看
[code]SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.format(null);

在第二行会报空指针异常,为什么呢?

我们进入源码看一下就知道了。

第一步

public final String format(Date date)
    {
        return format(date, new StringBuffer(),
                      DontCareFieldPosition.INSTANCE).toString();
    }
这里date为null,没问题,继续;

第二步

[code]public StringBuffer format(Date date, StringBuffer toAppendTo,
FieldPosition pos)
{
pos.beginIndex = pos.endIndex = 0;
return format(date, toAppendTo, pos.getFieldDelegate());
}


这里date为null也没问题,继续;

第三步

[code]private StringBuffer format(Date date, StringBuffer toAppendTo,
FieldDelegate delegate) {

calendar.setTime(date);
......
}


这里date为null也没问题,进入calendar.setTime看一下;

第四步

[code]public final void setTime(Date date) {
setTimeInMillis(date.getTime());
}


这里date为null,就变成null.getTime(),必然会报空指针异常;

由于空指针异常是运行时异常,编译时不会被检查出来,所以在使用SimpleDateFormat的format(Date date)方法时,请做非空判断,或异常处理。
 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: