Golang panic用法

Go语言追求简洁优雅,因此,Go语言不支持传统的 try…catch…finally 这种异常,由于Go语言的设计者们认为,将异常与控制结构混在一块儿会很容易使得代码变得混乱。由于开发者很容易滥用异常,甚至一个小小的错误都抛出一个异常。在Go语言中,使用多值返回来返回错误。不要用异常代替错误,更不要用来控制流程。在极个别的状况下,也就是说,遇到真正的异常的状况下(好比除数为 0了)。才使用Go中引入的Exception处理:defer, panic, recover。spa

这几个异常的使用场景能够这么简单描述:Go中能够抛出一个panic的异常,而后在defer中经过recover捕获这个异常,而后正常处理。设计

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
d
exit code 0, process exited normally.
相关文章
相关标签/搜索