go异常处理

来源:互联网 发布:屏幕闪光灯软件 编辑:程序博客网 时间:2024/05/22 10:37

go的异常处理通过defer,panic,recover这3个流程来达到(defer是关键字,后2者是函数)

 

(1)异常的捕获通常放在函数最末,也就是defer里面

(2)panci抛出异常

(3)recover捕获异常

 

package mainimport (       "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显示结果:

 

原创粉丝点击