【发布时间】: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失败或者没有通过防御检查失败。