【问题标题】:Return empty instead of null返回空而不是 null
【发布时间】:2018-10-09 19:54:27
【问题描述】:

我有异常的方法搜索

ValidationException(String operation) {
    super("Not valid for operation " + checkOperation(operation));
}

以及检查操作的方法

private static String checkOperation(String operation) {
    if (operation != null)
        return operation;
    else
        return null;
}

如果第一种方法开始工作并且operation == null 我们有消息“无效操作无效”。但必须是“无效操作”。需要写什么而不是return null

【问题讨论】:

  • return "";怎么样
  • 或者作为单行:return operation != null ? operation : ""; 或者使用Optional: return Optional.ofNullable(operation).orElse("");`
  • 这里还有两个(Java 9)Objects.toString(operation, "") 或者,更好的是,Objects.requireNonNullElse(operation, "") [不需要为此编写方法(只是)] {尽管消息说操作是 null也没有那么糟糕}
  • 为什么不使用super("Not valid for operation " + String.valueOf(operation));(它实际上会告诉你null - 这比空字符串更有帮助),而不是super("Not valid for operation " + checkOperation(operation)); 更好的是它应该更早地使用IllegalArgumentException 失败或者没有通过防御检查失败。

标签: java exception null


【解决方案1】:

将空格放入checkOperation的返回值中:

if (operation != null)
    return " " + operation;
else
    return "";

然后像这样调用:

super("Not valid for operation" + checkOperation(operation));
                           // ^ remove the space here

虽然我认为提供构造函数的两个重载会更好:

  • 不进行任何操作(并构造消息Not valid for operation);
  • 另一个进行操作(并构造消息Not valid for operation whatever)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-24
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2018-08-08
    • 2019-05-14
    • 2013-07-22
    相关资源
    最近更新 更多