Error handling “你怎么样?”;特别";返回表示一个条件的值,称为?

Error handling “你怎么样?”;特别";返回表示一个条件的值,称为?,error-handling,return-value,terminology,Error Handling,Return Value,Terminology,假设我有一个函数,它计算长度并将其作为正整数返回,但也可以为超时返回-1,为“无法计算”返回-2,为无效参数返回-3 尽管对最佳实践、适当的例外以及诸如此类的问题进行了讨论,但这种情况在遗留代码库中经常发生。这种做法或超出正常输出值范围的返回值的名称是什么,-1是最常见的?这是一个示例。我不知道这个概念何时应用于函数的返回值有什么更具体的术语 文章将其称为返回状态代码: 一般来说,有两种方法可以在错误经过时处理它们 在软件中从一层到另一层:抛出异常并返回 状态代码。。。 通过状态返回,一个有价值

假设我有一个函数,它计算长度并将其作为正整数返回,但也可以为超时返回
-1
,为“无法计算”返回
-2
,为无效参数返回
-3

尽管对最佳实践、适当的例外以及诸如此类的问题进行了讨论,但这种情况在遗留代码库中经常发生。这种做法或超出正常输出值范围的返回值的名称是什么,
-1
是最常见的?

这是一个示例。我不知道这个概念何时应用于函数的返回值有什么更具体的术语

文章将其称为返回状态代码

一般来说,有两种方法可以在错误经过时处理它们 在软件中从一层到另一层:抛出异常并返回 状态代码。。。 通过状态返回,一个有价值的沟通渠道(返回 函数的值)已被接管进行错误处理

就个人而言,我也会将它们称为状态码,类似于HTTP状态码(如果我们假装HTTP响应类似于函数返回)

作为旁注,除了异常和返回状态代码之外,还存在一种错误处理的一元方法,它在某种意义上结合了前两种方法。例如,在Scala中,monad可用于指定返回值,该返回值既可以表示错误状态代码,也可以表示常规的快乐值,而不必为状态代码屏蔽部分域:

def divide(a: Double, b: Double): Either[String, Double] =
  if (b == 0.0) Left("Division by zero") else Right(a / b)

divide(4,0)
divide(4,2)
哪个输出

res0: Either[String,Double] = Left(Division by zero)
res1: Either[String,Double] = Right(2.0)