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

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

我有一个方法,如果找到对象,应该返回它。

如果没有找到,我是否应该:

  1. 返回空
  2. 抛出异常
  3. 其他


隔江千里
浏览 806回答 3
3回答

互换的青春

如果您总是期望找到一个值,那么如果它丢失了,那么抛出异常。这一例外将意味着存在一个问题。如果值可能丢失或存在,并且两者对应用程序逻辑都有效,则返回一个NULL。更重要的是:您在代码中的其他位置做什么?一致性很重要。

慕盖茨4494581

只有当异常确实是错误时才抛出异常。如果预期对象的行为不存在,则返回NULL。否则,这是一个优先考虑的问题。

MM们

如果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
打开App,查看更多内容
随时随地看视频慕课网APP