【问题标题】:Handling Null being thrown by Library Method?处理库方法抛出的 Null?
【发布时间】:2019-12-03 17:31:21
【问题描述】:

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

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;
        }

【问题讨论】:

  • 什么是LibraryMethod?那是你写的吗?此外,此代码不会抛出 null 或空指针 - 它会抛出 NullPointerException(大概)。

标签: java string validation nullpointerexception null


【解决方案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 的概念,您可能想看看。

【讨论】:

    猜你喜欢
    • 2016-04-03
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    相关资源
    最近更新 更多