不允许访问网站,一手楼房可以做哪个网站,桂林有什么好玩的地方,网站开发怎样验收空指针异常(Null Pointer Exception)是我们平时最容易碰到的#xff0c;也是最令人讨厌的异常。本文介绍如何避免出现空指针异常。首先我们看如下的示例#xff1a;private Boolean isFinished(String status) {if (status.equalsIgnoreCase(Finish)) {return Bo…空指针异常(Null Pointer Exception)是我们平时最容易碰到的也是最令人讨厌的异常。本文介绍如何避免出现空指针异常。首先我们看如下的示例private Boolean isFinished(String status) {if (status.equalsIgnoreCase(Finish)) {return Boolean.TRUE;} else {return Boolean.FALSE;}}如果status的值为空的话那么将会出现空指针异常(本例第2行)。所以我们应该使用如下的方法private Boolean isFinished(String status) {if (Finish.equalsIgnoreCase(status)) {return Boolean.TRUE;} else {return Boolean.FALSE;}}这样的话如果status为空也不会出现空指针异常。相信我们大多数朋友已经知道这样的方法了如果一个对象可能为null那么不需要直接调用它的方法。接下来我将接着提供几种避免空指针的建议。1.判断Collection是否为空。2.使用一些判断方法。3.assert关键字。4.Assert类。5.异常处理。6.太多的点.操作语法。7.使用StringUtils类1.判断Collection是否为空Collection 为空是指Collection中没有元素。一些开发者如果碰到Collection中没有元素的时候经常return null更好的做法是你应该return Collections.EMPTY_LIST,Collections.EMPTY_SET或者是Collections.EMPTY_MAP.错误的代码public static List getEmployees() {List list null;return list;}正确的代码public static List getEmployees() {List list Collections.EMPTY_LIST;return list;}2.使用一些判断方法使用一些方法如contains(),indexOf(),isEmpty(),containsKey(),ContainsValue和hasNext()等来判断确保不存在空值。示例String myName qiyadeng;List list Collections.EMPTY_LIST;boolean exist list.contains(myName);int index list.indexOf(myName);boolean isEmpty list.isEmpty();Map map Collections.EMPTY_MAP;existmap.containsKey(myName);existmap.containsValue(myName);isEmptymap.isEmpty();Set setCollections.EMPTY_SET;3.assert关键字在Java1.4版本之后提供了断言assert来确定你的代码中的假设。使用的语法如下assert expression1expression1是一个boolean表达式如果expression1返回的false系统将会抛出AssertError(没有详细信息)。另外一种使用方法assert expression1:expression2如果expression1返回false那么系统将会抛出AssertError并且详细信息为expression2。示例public static String getManager(String employeeId) {assert (employeeId ! null) : employeeId must be not null;return qiyadeng;}我使用getManager(null)来调用getManger方法最后运行的结果是java.lang.AssertionError:employeedId must be not null 注意记得使用java选项中加入-enableassertion开启assertion功能。4.Assert类Assert类在com.bea.core.repackaged.springframework.util包中有许多方法可以用于断言。public static String getManager(String employeeId) {Assert.notNull(employeeId, employeeId must be not null);Assert.hasLength(employeeId, employeeId must has length greater than 0);return qiyadeng;}当我同样使用getManager(null)来调用getManager方法将获得信息java.lang.IllegalArgumentException: employeeId must be not null。5.异常处理使用try catch处理异常或是检查变量是否为空。public static String getManager(String employeeId) {return null;}如上代码我使用下面方法调用String managerId getManager(A015);System.out.println(managerId.toString());将会发生java.lang.NullPointerException,为了处理这个异常我们应该使用try catch来处理异常或者是检查变量是否为null。try-catch方法String managerId getManager(A015);try {System.out.println(managerId.toString());} catch (NullPointerException npe) {//write your code here}或者是对变量进行检查String managerId getManager(A015);if (managerId ! null) {System.out.println(managerId.toString());} else {//write your code here}6.不要太多的点.操作语法一些开发者使用太多的这样的方法来减少代码但是这个对后面的维护和异常处理都是不太好的。错误的写法String attrValue (String)findViewObject(VO_NAME).getCurrentRow().getAttribute(Attribute_NAME);正确的写法ViewObject vo findViewObject(VO_NAME);Row row vo.getCurrentRow();String attrValue (String)row.getAttribute(Attribute_NAME);7.使用StringUtils类StringUtil是org.apache.commns.lang包中的类我们可以使用该类来避免空指针异常。例如 StringUtils.isEmpty(),StringUtils.isBlank,StringUtils.equals()等等更多的你可以参考文档。为了不出现空指针异常在写代码的过程中需要时刻检查你的代码是否会抛出NullPointerException如果你没有时间及时调整的话使用//TODO标记便于你后面解决问题。个人建议在构建代码时尽可能全面的考虑到各种变量的传递有可能存在空指针错误的一次性处理考虑不全面的在使用//TODO标记以便后续处理。总结有错误之处烦请各路大神指点共同学习共同进步