为了账号安全,请及时绑定邮箱和手机立即绑定

当检索方法不能生成返回值时,应该返回‘NULL’还是抛出异常?

当检索方法不能生成返回值时,应该返回‘NULL’还是抛出异常?

当检索方法不能生成返回值时,应该返回‘NULL’还是抛出异常?我有一个方法,如果找到对象,应该返回它。如果没有找到,我是否应该:返回空抛出异常其他
查看完整描述

3 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

如果您总是期望找到一个值,那么如果它丢失了,那么抛出异常。这一例外将意味着存在一个问题。

如果值可能丢失或存在,并且两者对应用程序逻辑都有效,则返回一个NULL。

更重要的是:您在代码中的其他位置做什么?一致性很重要。


查看完整回答
反对 回复 2019-07-12
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

只有当异常确实是错误时才抛出异常。如果预期对象的行为不存在,则返回NULL。

否则,这是一个优先考虑的问题。


查看完整回答
反对 回复 2019-07-12
?
MM们

TA贡献1886条经验 获得超2个赞

如果NULL从不表示错误,那么只需返回NULL。

如果NULL总是一个错误,那么抛出一个异常。

如果NULL有时是一个异常,那么就编写两个例程。一个例程抛出一个异常,另一个例程是一个布尔测试例程,它在输出参数中返回对象,如果找不到该对象,则该例程返回一个false。

这是很难滥用一个尝试例行公事。忘记检查NULL真的很容易。

因此,当NULL是一个错误时,只需编写

object o = FindObject();

当NULL不是错误时,可以编写如下代码

if (TryFindObject(out object o)
  // Do something with o
else
  // o was not found


查看完整回答
反对 回复 2019-07-12
  • 3 回答
  • 0 关注
  • 789 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信