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

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

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

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

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

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

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

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


查看完整回答
反对 回复 2019-08-05
?
aluckdog

TA贡献1847条经验 获得超7个赞


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

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



查看完整回答
反对 回复 2019-08-05
?
慕妹3242003

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

如果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-08-05
  • 3 回答
  • 0 关注
  • 372 浏览
慕课专栏
更多

添加回答

举报

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