Java中如何在Try代码块内编写条件判断语句实现空值校验?
Java空指针判断需求实现修正
原有代码的问题
- 空指针调用风险:如果
a.string1本身为null,调用equals()方法会直接触发JVM抛出的NullPointerException,不会执行你自定义的throw逻辑 - null判断逻辑错误:Java中判断对象是否为null应该用
== null,equals(null)仅在对象非空时才能正常执行 - 需求逻辑冲突:你在try块中抛出NPE后又立刻在catch块捕获返回字符串,完全没有达成「只要其中一个为null就抛出NullPointerException」的要求
- 编译错误:方法没有覆盖所有执行路径的返回值,当两个字符串都不为null时,方法没有返回语句,编译无法通过
正确实现方案
方案1:符合「发现null就抛出NPE」的需求
如果要求只要存在null就对外抛出NullPointerException,无null时返回正常业务字符串,实现如下:
public String handleException(Activity a) { // 同时兼容a本身为null的情况 if (a == null || a.string1 == null || a.string2 == null) { throw new NullPointerException("存在为null的参数"); } // 此处替换为你的正常业务返回逻辑 return a.string1.concat(a.string2); }
方案2:符合原有catch逻辑的需求(发现null返回错误提示)
如果你的实际需求是不对外抛出异常,遇到null直接返回错误提示字符串,实现如下:
public String handleException(Activity a) { try { if (a.string1 == null || a.string2 == null) { return "Null value found"; } // 此处替换为你的正常业务返回逻辑 return a.string1.concat(a.string2); } catch (NullPointerException e) { // 捕获a本身为null的场景 return "Null value found"; } }
内容的提问来源于stack exchange,提问作者Roshan Melanta
相关产品推荐
相关产品推荐

