爱丽丝
发布于

Go 错误处理

Go 错误处理

  • error类型是一个接口类型,这是它的定义:
    type error interface {
      Error() string
    }

Go 捕获异常

传统捕捉异常的方式

try 
catch
finally

go语言

引入了defer、panic、recover
1.Go程序抛出一个panic异常,在defer中通过recover捕获异常,然后处理

案例

package main
import "fmt"
func test() {
    //在函数退出前,执行defer
    //捕捉异常后,程序不会异常退出
    defer func() {
        err := recover() //内置函数,可以捕捉到函数异常
        if err != nil {
            //这里是打印错误,还可以进行报警处理,例如微信,邮箱通知
            fmt.Println("err错误信息:", err)
        }
    }()
    //如果没有异常捕获,直接报错panic,运行时出错
    num1 := 10
    num2 := 0
    res := num1 / num2
    fmt.Println("res结果:", res)
}
func main() {
    test()
    fmt.Println("如果程序没退出,就走我这里")
}

打印结果

err错误信息: runtime error: integer divide by zero
如果程序没退出,就走我这里
Exiting.

本文转自 https://learnku.com/articles/62088,如有侵权,请联系删除。

浏览 (468)
点赞
收藏
1条评论
大喵喵酱
大喵喵酱

我习惯了Java,学习Go语言的时候这个异常处理让我觉得很别扭。 ????

点赞
评论