处理库方法抛出的 Null?

Handling Null being thrown by Library Method?

提问人:java12399900 提问时间:12/4/2019 更新时间:12/15/2019 访问量:73

问:

我有下面的代码,我试图处理抛出的空指针,但即使它是空的,我仍然得到空错误。

当为 null 时,如何最有效地处理 null 指针并返回空字符串?LibraryMethod.getValue

private static String createValue(NodeList userAttributes) {

            if(null != LibraryMethod.getValue(LibraryMethod.getNode(userAttributes, USER_NAMES).get())){
                return LibraryMethod.getValue(LibraryMethod.getNode(userAttributes, USER_NAMES).get());
            }

            return EMPTY_STRING;
        }
java 字符串 验证 nullpointerException null

评论

0赞 jarmod 12/4/2019
什么?那是你写的吗?此外,此代码不会抛出 null 或 null 指针 - 它会抛出 NullPointerException(大概)。LibraryMethod

答:

1赞 jarmod 12/4/2019 #1

解决此类问题有多种模式。

  1. 公开该方法的库还可以公开一个方法:get(xyz)has(xyz)

    if (lib.has(xyz)) {
        return lib.get(xyz);
    }
    
    return 0;
    
  2. 公开的库还可以公开:get(xyz)get(xyz, defaultval)

    return lib.get(xyz, 0);
    
  3. 某些编程语言支持可选的链接语法,例如:

    return user?.address?.street;
    
  4. 使用某种异常接口,例如:

    try {
        result = lib.get(xyz);
    } catch (NoSuchKeyException e) {
        result = 0;
    }
    

与选项 #3 相关,Java 有一个 Optional 的概念,您可能需要查看它。