如果出现故障会返回什么,而不是返回一个“幻数”?

时间:2017-01-31 13:16:59

标签: language-agnostic

假设我重新实现了一种在字符串中查找字符串位置的方法。所以我得到一个整数的位置,或者像-1这样的“幻数”。我在很多编程语言中看到了这种模式,其中一些返回类似null的值,有些返回一些随机的“超出范围”值,如-`,有些完全抛出错误。

在这方面是否存在“最佳实践”,或者至少在其他编程语言中有一些我不了解的内容?

1 个答案:

答案 0 :(得分:0)

这并不像你说的那样与语言无关,它在很大程度上取决于语言和函数的确切目的。有三种不同的方法:

  • 抛出异常
  • 在某处设置一个标志,指示是否发生错误
  • 返回"超出范围"值

现在:

  • 有些语言没有任何例外概念,或者“错误”#34;并非如此"特殊"。
  • 设置错误标志可能是或可能不是所讨论语言的理想选择。 Go使用这种方法,返回结果,错误指示符是惯用的默认值。 Javascript使得接受function (result, err)之类的回调变得部分惯用。对于其他语言,这种方法可能根本不适合。
  • "超出范围"值是动态类型语言的典型值,但对于静态类型语言可能会有问题。

无论哪种方法最适合所讨论的语言,具体功能需要单独决定。这些目标需要在理解之间进行权衡("未找到字符串"可能 异常),并且易于编写简单和正确代码。