您好,欢迎来到尚佳旅游分享网。
搜索
您的当前位置:首页go语言基础 -- 异常处理机制

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内置函数

例:

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)
    }
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- shangjiatang.cn 版权所有 湘ICP备2022005869号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务