账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Defer func() 与 log.Falt()
    41
    0

    在Go程序设计中看到如下代码

    
    //Some code to create network link to server ...
    
    func main() {
       con, err := net.Dial("tcp","host to server")
       if err != nil {
            log.Fatal(err)
        }
       defer con.Close()
       mustCopy(os.Stdout,con)
    }
    
    func mustCopy(dst io.Writer,src io.Reader) {
            if _,err := io.Copy(dst,src); err != nil {
                   log.Fatal(err)
            }
    }
    

    现在我的疑问是 如果 在mustCopy中产生err执行log.Fatal(err)后, main的中defer 语句还会执行吗(log.Fatal(err)调用了os.Exit(0))? 如果执行了;有什么方法可以捕捉到那条语句的确执行了? 感谢在先.

    做了如下测试,终端却没有打印..... 也打了断点发现程序直接退出.

    func main() {
        defer fmt.Println("Main Code")
        subRoting()
    }
    func subRoting() {
        log.Fatal("")
    }
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 共 0 条
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部