首页 > 代码库 > go异常处理
go异常处理
go的异常处理通过defer,panic,recover这3个流程来达到(defer是关键字,后2者是函数)
(1)异常的捕获通常放在函数最末,也就是defer里面
(2)panci抛出异常
(3)recover捕获异常
package main
import (
"fmt"
"runtime"
)
func main() {
defer func() {
fmt.Println("bbbbb")
if x := recover(); x != nil {
fmt.Println(x) //
i := 0
funcName, file, line, ok := runtime.Caller(i)
for ok {
fmt.Printf("frame %v: [file:%v] \t\t %v:(%v)\n",
i, file, runtime.FuncForPC(funcName).Name(), line)
i++
funcName, file, line, ok = runtime.Caller(i)
}
}
fmt.Println("ccccc")
}()
f()
}
func f() {
fmt.Println("aaaaa")
panic(55)
fmt.Println("ddddd") // 这行不会打印
}
console显示结果:
go异常处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。