gpt4 book ai didi

java - 返回默认值还是引发异常?

转载 作者:搜寻专家 更新时间:2023-10-31 20:01:41 26 4
gpt4 key购买 nike

我对什么被认为是好的做法感到困惑 - 这个决策语言是否依赖?假设我有以下 Java 代码:

public class Stack {
public Integer pop() {
if (isEmpty()) return null; // or some exception maybe?
// else get and return the top item in the stack.
};
}
}

pop 方法的客户端需要一些 Integer 值,那么让客户端知道堆栈为空的最佳方法是什么?

最佳答案

返回 null 或默认值通常是一种不好的做法,应该首选异常(exception)。原因是当出现问题时,您应该始终努力尽快失败。如果您返回 null,您将在代码的其他地方发生错误,您的 API 用户将难以找到问题所在。这叫做 Fail Fast .

这个经验法则的一个异常(exception)是当你的 API 会让用户依赖异常来进行流量控制时,所以如果你的堆栈不支持 isEmpty(),那么异常不是一个好主意.如果您有一个堆栈只允许 peek()pop()add() - 出于某种原因, isEmpty() 不允许成为 API 的一部分。

对于这两种方法,您的用户的代码会发生什么变化?

选项 1 - 使用 null:

Integer x = stack.pop();
if (x != null) {
//do something with x
}

选项 2 - 使用异常(exception):

Integer x = null;
try {
x = stack.pop();
} catch (MyException e) { }
//do something with x

第二个实际上是使用异常机制来进行流量控制——这是API设计中的一大缺陷。

关于java - 返回默认值还是引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29768708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com