gpt4 book ai didi

java - 我应该使用 null 返回值、检查异常或可能的 null 对象模式来设计以下 API

转载 作者:行者123 更新时间:2023-12-03 01:57:06 25 4
gpt4 key购买 nike

我设计了一个API getStock,但我对如何处理操作失败没有很好的判断。

API 将使我能够传递股票代码,如果成功则返回股票。

我应该使用null returned value来指示操作失败,还是抛出检查异常来指示操作失败?或者可能Null Object Pattern ?为什么?

<小时/>

返回值为空

// User force to check the returned value each time.
// This happen when, stock server is down, network is down,
// stockCode is not valid...
Stock stock = stockServer.getStock(stockCode);
if (stock != null) {
// Success.
}
<小时/>

检查异常

try {
// User force to catch the exception each time.
// This happen when, stock server is down, network is down,
// stockCode is not valid...
Stock stock = stockServer.getStock(stockCode);
// Success.
} catch (StockNotFoundException ex) {
}
<小时/>

空对象模式

Stock stock = stockServer.getStock(stockCode);
// stock.getPrice(), stock.getVolume() will return 0...
// But when there is a need to check whether we are getting
// a null stock, we need to check
// if (stock.getPrice() == 0.0 && stock.getVolume()...

最佳答案

对于这种(主观)设计决策,我的建议是遵循语言的粒度(即尝试并遵循该语言的标准库使用的实践。)Java 标准库通常更喜欢异常用于错误处理,而不是返回值。例如,如果 Java Socket 类无法连接(例如,如果网络中断或远程地址无效),则会抛出 IOException

另一方面,空返回值通常用于 Collection 对象无法找到指定键等情况。

所以我认为,就您的情况而言,异常更符合 Java 语言的“精神”,因为它可能表明存在严重问题,例如网络错误。

您还可以使用 null 返回值来指示指定的 stockCode 不存在,并使用异常来指示更严重的问题,例如网络故障。不过,这将要求 API 用户检查 null 返回值并处理异常。

关于java - 我应该使用 null 返回值、检查异常或可能的 null 对象模式来设计以下 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3911995/

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