注册 登录

清河洛

Go语言中的错误处理

qingheluo2021-09-06清河洛293
Go语言中的错误Go语言通过内置的错误接口提供了非常简单的错误处理机制error类型是一个接口类型,它的定义:type error interface { Error() string } 一般情况下,我们使用函数在最后的返回值中返回错误信息使用errors.New(err_msg)函数可以返回一个错误信息func division (x , y int) (float64,error){ if y == 0 { return 0,errors.New("错误,除数不能为0") } return float64(x/y),nil } Go...

Go语言中的错误

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

error类型是一个接口类型,它的定义:

type error interface {
    Error() string
}

一般情况下,我们使用函数在最后的返回值中返回错误信息

使用errors.New(err_msg)函数可以返回一个错误信息

func division (x , y int) (float64,error){
    if y == 0 {
        return 0,errors.New("错误,除数不能为0")
    }
    return float64(x/y),nil
}

Go语言中的panic

panic相当于其他语言中的异常,当程序遇到panic时会触发程序宕机退出

抛出panic

使用内置函数panic(err_msg)来抛出panic

func main() {
    if a == 0 {
        panic("变量a的值为零")
    }
    fmt.Println("该语句不会执行")
}

捕获panic

使用内置函数recover()来捕获panic

recover必须在defer函数中才能生效,其他作用域下它是不工作的

var arr [5] int

func set_val(index int){
    defer func(){
        if err := recoover(); err !=nil {
            fmt.Println(err)
        }
    }()

    arr[index] = 10
}

func main(){
    set_val(8)
    //设置arr[8]的值,由于arr只有5个元素,会数组越界,触发panic
    fmt.Println("该语句仍然会执行")
}


网址导航