在不做任何处理的情况下,发生错误后程序会崩溃退出,为了保证服务的稳定性,我们需要对错误进行捕获,来对错误进行处理
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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务