go语言基础 -- 异常处理机制

在不做任何处理的情况下,发生错误后程序会崩溃退出,为了保证服务的稳定性,我们需要对错误进行捕获,来对错误进行处理

golang的错误处理机制

golang的错误处理机制不支持传统的try…catch…finally…机制,而是引入了defer…panic…recover…,在go代码中抛出一个panic异常,通常在defer中捕捉该异常,捕获使用recover内置函数
示例:

func demo() {
    // 使用匿名函数
    defer func() {
        // 使用recover来捕捉panic
        err := recover()
        if err != nil {
            fmt.Println("err=", err)
        }
    }() //这里加()是调用匿名函数,不加仅为定义
    num1 := 10
    num2 := 0
    // 这里会panic
    re := num1 / num2
}

在发生异常或函数执行完毕后,会执行到defer,在执行defer的时候我们用recover捕获到异常错误码,打印出来。我们也可以将一些报警的操作放到异常处理中。

自定义错误类型

我们也可以自定义自己的错误类型,使用errors.New()或panic内置函数

  1. errors.New(“错误说明”),会返回一个error类型的值
  2. panic内置函数接受interface{}类型的值作为参数,可以接收error类型的变量,输出错误信息,并退出程序

例:

func ReadConf(name string) err error {
    if name == "conf.ini" {
        return nil
    } else {
        return errors.New("error filename")
    }
}

func test() {
    err := ReadConf("xxx")
    if (err != nil) {
        // panic可以输出错误并终止程序
        panic(err)
    }
}

你可能感兴趣的:(go/golang基础及实践,golang,开发语言,后端)