码迷,mamicode.com
首页 > 其他好文 > 详细

golang recover panic 流程控制的可达与不可达

时间:2015-04-27 13:09:15      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

--------------------------流程控制可达-----------------------------
package main

import "fmt"

func explode() {
    // Cause a panic.
    panic("WRONG")

}

func throwPanic(f func()) {
    defer func() {
        if err := recover(); err != nil {
            // Handle our error.
            fmt.Println("FIX")
            fmt.Println("ERR", err)
        }
    }()
    f()
    fmt.Println(" finish")
}

func main() {
    throwPanic(explode)
    fmt.Println(" reach here ")//可达
}



--------------------------流程控制不可达-----------------------------
package main

import "fmt"

func explode() {
    // Cause a panic.
    panic("WRONG")
}

func main() {
    // Handle errors in defer func with recover.
    defer func() {
    if err := recover(); err != nil {
        // Handle our error.
        fmt.Println("FIX")
        fmt.Println("ERR", err)
    }
    }()
    // This causes an error.
    explode()
    fmt.Println(" reach here ")// 达不到
}

 

golang recover panic 流程控制的可达与不可达

标签:

原文地址:http://www.cnblogs.com/rojas/p/4459696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!