登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: [golang]正式项目中千万不要用 log.Fatal() 它和panic()函数的区别     [回主站]     [分站链接]
[golang]正式项目中千万不要用 log.Fatal() 它和panic()函数的区别
clq
浏览(269) - 2019-01-01 21:49:51 发表 编辑

关键字: golang_bug

[golang]正式项目中千万不要用 log.Fatal() 它和panic()函数的区别

golang的log.Fatal()和panic()函数的区别

一日,发现 golang 写的程序居然退出了! 心想,这怎么可能!都加了异常保护啊。结果发现有一个函数中有一个错误处理使用了 log.Fatalf 函数 ...
它能导致程序立即退出而不执行 defer 函数,更不要说什么异常保护了。心想这都什么 XX 代码,一个网络不通你就要停断我的程序,猪写的代码...

    r, _, err := c.Exchange(m, net.JoinHostPort(dns_host, "53"))
    if r == nil {
        //log.Fatalf("*** error: %s\n", err.Error()); //!!! //clq 和 panic 不同,这个函数会立即退出,defer函数都不会被执行,所以正式函数中造成不要用!!!
        fmt.Println("GetDnsPtr() *** error: %s\n", err.Error());
        return result;
    }

ps. 可参考 https://www.jianshu.com/p/f85ecae6e7df



总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录
golang的坑 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1