golang panic,defer,recover

参考:https://studygolang.com/articles/4108golang

 

defer能够单独处理err函数

panic与recover和defer一块儿使用import

 

package main

import "fmt"

func main() {
    defer func() { // 必需要先声明defer,不然不能捕获到panic异常
        fmt.Println("c")
        if err := recover(); err != nil {
            fmt.Println(err) // 这里的err其实就是panic传入的内容,55
        }
        fmt.Println("d")
    }()
    f()
}

func f() {
    fmt.Println("a")
    panic(55)
    fmt.Println("b")     //不运行
    fmt.Println("f")  //不运行
}
结果:

a
c
55
d原理

 

原理:im

  1.首先定义defer,注意defer是执行某个函数 defer func(){} ()异常

    recover定义在defer中di

  2.在另外的函数中必须用panic(err) -----这个err能够是任意的值,如panic(333) panic(err) panic("dffd")co

  3.在defer函数中会捕获这个err,这个err就是panic中的errps

相关文章
相关标签/搜索