Go 从函数返回错误

Go 从函数返回错误Go语言的做法是从函数和方法中返回一个错误值。前面介绍了如何创建并返回错误,如下程序是一个这样的示例。

 package main

 import (
  "fmt"
 )

 func Half(numberToHalf int) (int, error) {
  if numberToHalf%2 != 0 {
   return -1, fmt.Errorf("Cannot half %v", numberToHalf)
  }
  return numberToHalf / 2, nil
 }

 func main() {
  n, err := Half(19)
  if err != nil {
   fmt.Println(err)
   return
  }
  fmt.Println(n)
 }

在这个示例中,一个函数返回错误,而调用者对其进行处理。对其中的代码解读如下:

  • 将整数值19传递给函数Half。
  • 函数Half检查这个值是否为偶数。这里使用了Go语言中的求模运算符,它返回除法运算的余数。如果余数不为零,传入的值就不可能是偶数。在这里,余数确实不为零。
  • 函数Half返回-1和一个错误值。
  • 调用者检查是否有错误,这里发现确实有错误。
  • 打印这个错误,程序到此结束。

如果您运行这个程序,将打印一个错误。
Go 从函数返回错误

这个示例演示了Go语言错误处理方式的一个优点:错误处理不是在函数中,而是在调用函数的地方进行的。这在错误处理方面提供了极大的灵活性,而不是简单地一刀切。

错误和可用性

除从技术角度考虑Go语言的错误处理方式和错误生成方式外,还需从以用户为中心的角度考虑错误。编写供他人使用的库或包时,您编写和使用错误的方式将极大地影响可用性。使用您编写的库时,用户可能遇到错误,并尝试从错误中恢复。

请看下面的错误,您认为自已能够轻松地处理它或从中恢复吗?

You broke something! Good luck!!

这条错误消息很糟糕,因为它没有提供有关哪里出现问题的线索,也没有提供有关如何恢复的建议。下面的错误消息更好。

No config file found.Please create one at ~/.foorc.

为什么这样说呢?有如下几个原因。

  • 具体地指出了问题所在。

  • 提供了问题解决方案。

  • 对用户更有礼貌。

如果库用户相信错误会以一致的方式返回,且包含有用的错误消息,则用户能够从错误中恢复的可能性将高得多。他们很可能也会认为您编写的库不仅很有用,而且值得信任。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!