NullPointerException :空指针异常
Throwable <-- Exception <-- RuntimeException <-- NullPointerException
从上述的类结构图来看,空指针它是属于运行时异常 RuntimeException 的子类,它不是捕获型的,只有在程序运行时才可能报出来,而且会造成程序中断。
如何避免空指针?
Code :
1.对于字符串比较: if(SUCCESS.equals(status)){} 即使status为空也不会空指针异常
//常量放在最前
* Objects.equals(a, b) : 此方法即便 a,b 都为空也不会报错
1.1当valueOf()和toString()返回相同的结果时,宁愿使用前者。
beacause 传递一个null给valueOf()将会返回“null”
2.在对象初始化的时候赋予默认构造实现或默认值:
User user = new User() ; String s = StringUtils.EMPTY; //指定为空值
3.在返回一个集合的话,默认会是 null,统一规范返回一个空集合。
:{List list = userMapper.gerUserList();
return list == null ? new ArrayList() : list;}
4.断言: 用来检查程序的安全性.
使用之前进行检查条件,如果不符合条件就报异常,符合就继续。
例如: assert name == null : "名称不能为空";
将会输出: Exception in thread "main" java.lang.AssertionError: 名称不正确
*不过默认是不启动断言检查的,需要要带上 JVM 参数:-enableassertions 才能生效。
*Java 中这个用的很少,建议使用 Spring 中的,更强大,更方便好用。
*(Spring中的用法:Assert.notNull(name,"名称不能为空");)
5.Optional 是 JDK 8 新增的新特性,再也不用 != null 来判断了
这个在一个对象里面的多个子对象连续判断的时候非常有用。
网友评论