GO语言-异常处理【GO学习之路】

291 阅读2分钟

top1.jpg

前言

本文介绍GO语言异常处理方式。

本文大纲

GO语言-异常处理.png

什么是错误 错误是什么?

错误指的是可能出现问题的地方出现了问题。比如打开一个文件时失败,这种情况在人们的意料之中 。

而异常指的是不应该出现问题的地方出现了问题。比如引用了空指针,这种在人们的意料之外。可见,错误是业务过程的一部分,而异常不是 。

Go中的错误也是一种类型。错误用内置的error 类型表示。就像其他类型的,如int,float64,。错误值可以存储在变量中,从函数中返回,等等。

演示错误

示例:

    func main() {  
    f, err := os.Open("/test.txt") // 打开一个不存在的文件
    if err != nil {
        fmt.Println(err)
        return
    }
  //根据f进行文件的读或写
    fmt.Println(f.Name(), "opened successfully")
    
    运行结果:
    open /test.txt: No such file or directory

以上就会得到一个错误:该文件不存在。

从错误中提取更多信息的不同方法, 既然我们知道错误是一种接口类型,那么让我们看看如何提取更多关于错误的信息。

错误类型表示

Go 语言通过内置的错误接口提供了非常简单的错误处理机制。

错误定义:

type error interface {
    Error() string
}

它包含一个带有Error()字符串的方法。任何实现这个接口的类型都可以作为一个错误使用。这个方法提供了对错误的描述。

自定义错误

创建自定义错误可以使用errors包下的New()函数,以及fmt包下的:Errorf()函数。

//errors包:
func New(text string) error {}

//fmt包:
func Errorf(format string, a ...interface{}) error {}

使用New()函数创建自定义错误之前,让我们了解它是如何实现的。

// Package errors implements functions to manipulate errors.
  package errors

  // New returns an error that formats as the given text.
  func New(text string) error {
      return &errorString{text}
  }

  // errorString is a trivial implementation of error.
  type errorString struct {
      s string
  }

  func (e *errorString) Error() string {
      return e.s
  }

异常处理的正确姿势

  1. 在程序开发阶段,坚持速错
  2. 在程序部署后,应恢复异常避免程序终止
  3. 对于不应该出现的分支,使用异常处理
  4. 针对入参不应该有问题的函数,使用panic设计

掘金(juejin.cn)  一起分享知识,Keep Learning!

本文正在参加技术专题18期-聊聊Go语言框架