Go语言中panic和recover使用实战

实例1

package main

import (
    "fmt"
)

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("detail:", r)
        }
    }()

    fmt.Println("before painc")
    panic("error1")
    panic("error2")
    fmt.Println("after panic")
    return
}

运行结果

before painc
detail: error1

实例2

package main

import (
    "fmt"
)

func main() {
    fmt.Println("before painc")
    panic("error1")
    panic("error2")
    fmt.Println("after panic")
    return
}

运行结果

before painc
panic: error1

goroutine 1 [running]:
main.main()
    /home/kenmy/go/src/github.com/shadowsocks/shadowsocks-go/sample-config/panic.go:17 +0xdd

猜你喜欢

转载自blog.51cto.com/12880687/2129486