Golang中的错误处理函数

85 阅读2分钟

Golang中的错误处理函数

在这篇文章中,我将演示Go中处理错误函数的基础知识以及如何使用它们。

什么是错误类型?

Go中的错误类型是一种接口类型。

type error interface {    Error() string}

所以基本上,错误类型是任何实现了Error() 方法的东西。

构建错误

有两种方法来创建一个错误值。

  • **error.New**职能
  • **fmt.Errorf**观察者函数
func bar() error {    return errors.New("error: an error occurred")}

每次调用这两个函数 ,都会返回一个不同的错误值,即使文本是相同的。

fmt.Println(bar()==bar())   # false

定义预期的错误

定义预期错误是Go中的一项重要技术,因为它可以帮助我们识别特定的错误,并以不同的方式处理它们。

下面是一个例子。

  • 我们首先定义一个名为ErrDivideByZero 的哨兵错误。
  • 然后我们定义了一个函数Divide ,当第二个参数为0时返回这个错误。
  • 后来我们用 **errors.Is**来检查返回的错误是否是ErrDivideByZero ,并做一些相应的操作。

包装错误

包装错误是指将一个错误值放在另一个错误值中,就像一个包装好的礼物。

当你想在遇到一个特定的错误时返回一个特定的错误信息时,这很有用。

下面是一个例子。

  • 首先,当第二个参数为零时,Divide 函数返回一个ErrDivideByZero
  • 然后,doDivide 函数用一个自定义的错误信息包装了ErrDivideByZero 错误,并返回一个 新的错误
  • 最后,在主函数中,我们使用errors.Is 函数来检查错误是否在其包装链内有ErrDivideByZero 类型。

总结

这里有三点启示

  • Go中的错误类型是一种接口类型。
  • 预定义的错误将允许我们在以后检查哪个错误发生。
  • 包裹错误为函数调用增加了上下文(类似于堆栈跟踪)。