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

时间:2025-02-16 10:41:46
  1. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  2. (null);

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

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

第一步

  1. public final String format(Date date)
  2. {
  3. return format(date, new StringBuffer(),
  4. ).toString();
  5. }

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

第二步

  1. public StringBuffer format(Date date, StringBuffer toAppendTo,
  2. FieldPosition pos)
  3. {
  4. = = 0;
  5. return format(date, toAppendTo, ());
  6. }

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

第三步

  1. private StringBuffer format(Date date, StringBuffer toAppendTo,
  2. FieldDelegate delegate) {
  3. (date);
  4. ......
  5. }

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

第四步

  1. public final void setTime(Date date) {
  2. setTimeInMillis(());
  3. }

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

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