zoukankan      html  css  js  c++  java
  • golang recover panic 流程控制的可达与不可达

    --------------------------流程控制可达-----------------------------
    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 ")// 达不到
    }
  • 相关阅读:
    自定义拦截器
    MVP模式网络请求购物车
    mvp+RecyclerView实现网络请求
    二维码扫描
    进度条加载
    画圆移动
    简单排序
    批量发货
    Angular服务
    终极购物车
  • 原文地址:https://www.cnblogs.com/rojas/p/4459696.html
Copyright © 2011-2022 走看看