0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

log.Fatal和panic函数的区别在哪

冬至配饺子 来源:GoLang全栈 作者:小锟哥哥 2022-08-17 11:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

要熟悉两者区别之前,需要先了解 os.Exit() 函数。

我这里截一张 Go 源码里面的解释:

pYYBAGL8WYuAMsUmAAC9AkxPSW4282.png

我们需要注意两点:

1、应用程序会被马上退出

2、defer 函数不会被执行

你可以理解这就是直接 kill -9 程序,不给任何喘气的机会。

现在我们再来看看 log.Fatal 函数的定义:

pYYBAGL8WZqAL15tAABXom8ng4c504.png

整体来说,他在 os.Exit() 之前做了一个日志输出。

他的流程可以理解是:

1、打印输出内容

2、退出应用程序

3、defer 函数还是不会执行

最后我们来看下 panic 的定义:

pYYBAGL8WaiAO3JTAADTJcS_EVA507.png

我们需要注意的是:

1、当前函数立刻会停止执行(不是主程序)

2、defer 函数执行

3、返回给调用者 caller

4、调用函数假装也收到了 panic 函数,从而他们也会执行以上的操作

5、递归执行,直到最上层函数,如果都没函数处理这个异常,应用程序就会停止

这和其他语言里面的 try catch 很像,但是 Go 语言里面没有类似的语法糖。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 应用程序
    +关注

    关注

    38

    文章

    3346

    浏览量

    60413
  • go语言
    +关注

    关注

    1

    文章

    159

    浏览量

    9845
  • 调用函数
    +关注

    关注

    0

    文章

    11

    浏览量

    2495
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    利用Last Log(Ramoops)排查系统问题:配置与实践指南

    在嵌入式系统(如基于瑞芯微 RK3399 的 Android 设备)开发或维护中,系统常因内核崩溃(Panic)、用户空间异常等突发情况重启,导致关键日志丢失。此时,Last Log(依托
    的头像 发表于 02-05 13:54 469次阅读
    利用Last <b class='flag-5'>Log</b>(Ramoops)排查系统问题:配置与实践指南

    同样能做采集控制,ARM边缘AI控制器与PLC究竟区别在哪里?

    仅能采集、能控制,还能跑算法、做边缘计算、接云平台、跑视觉AI应用。 于是一个问题来了:既然两者功能看起来都能做采集和控制,为什么还要ARM控制器?它与PLC究竟差在哪?能不能替代? 今天我们就从真实工程需求角度,把这两个“工控大类”摆上
    的头像 发表于 01-23 16:32 568次阅读
    同样能做采集控制,ARM边缘AI控制器与PLC究竟<b class='flag-5'>区别在哪</b>里?

    三防漆和绝缘漆的区别在哪?怎么选呢?

    ,对于保障产品可靠性、优化成本控制具有直接意义。三防漆和绝缘漆的区别在哪?怎么选呢?功能定位三防漆的本质是一种环境屏障型涂层。其首要设计目标是保护已组装完毕的印刷电路
    的头像 发表于 01-06 17:15 791次阅读
    三防漆和绝缘漆的<b class='flag-5'>区别在哪</b>?怎么选呢?

    三脚晶振与两脚晶振的区别在哪

    :两脚晶振和四脚晶振在使用电路上有什么区别?那两脚晶振和三脚晶振又有何区别一、三脚晶振石英晶振中常见的为两脚与四脚晶振,很少有三脚晶振的存在。而在陶瓷晶振中三脚晶振则
    的头像 发表于 11-21 15:37 1w次阅读
    三脚晶振与两脚晶振的<b class='flag-5'>区别在哪</b>?

    放电管和压敏电阻的区别在哪

    放电管和压敏电阻的区别在哪
    发表于 09-08 07:14

    新老款源表实测对比|吉时利2450与2400区别在哪

    行业资讯
    安泰小课堂
    发布于 :2025年07月21日 17:34:35

    Texas Instruments LOG300DEVM和LOG300RGTEVM评估模块数据手册

    Texas Instruments LOG300DEVM和LOG300RGTEVM评估模块 (EVM) 设计用于评估集成对数检波器、低噪声放大器 (LNA) 和输入频率检测器的性能,所有这些都集成在
    的头像 发表于 07-21 10:15 845次阅读
    Texas Instruments <b class='flag-5'>LOG</b>300DEVM和<b class='flag-5'>LOG</b>300RGTEVM评估模块数据手册

    Texas Instruments LOG200EVM放大器评估模块 (EVM)数据手册

    Texas Instruments LOG200EVM放大器评估模块 (EVM) 是一个用于评估LOG200的开发平台,LOG200是一款精密、高速对数放大器,集成了光电二极管偏置和暗电流校正功能
    的头像 发表于 07-21 09:51 858次阅读
    Texas Instruments <b class='flag-5'>LOG</b>200EVM放大器评估模块 (EVM)数据手册

    Texas Instruments LOG300 40MHz对数探测器数据手册

    Texas Instruments LOG300 40MHz对数探测器是一款由低噪声放大器 (LNA) 和对数探测器模块组成的集成模拟前端 (AFE)。该器件支持高达40MHz的输入频率范围
    的头像 发表于 07-17 13:43 888次阅读
    Texas Instruments <b class='flag-5'>LOG</b>300 40MHz对数探测器数据手册

    实战案例 | 基于ramoops的kernel panic故障定位技巧

    panic等死机现象。这时系统日志无法及时写入flash,重启后没有存到任何关键信息,工程师也崩溃了。下文则基于眺望电子T113-i核心板产品为例,介绍如何在Li
    的头像 发表于 06-06 08:33 1029次阅读
    实战案例 | 基于ramoops的kernel <b class='flag-5'>panic</b>故障定位技巧

    仁懋TOLL/TOLT封装系列区别在哪

    这两大封装系列的显著区别!散热方式大不同,热性能差异显著TOLL封装采用底部散热方式,热量需历经“Junction→Case→Solder→PCB→VIAs→PC
    的头像 发表于 06-04 17:22 1648次阅读
    仁懋TOLL/TOLT封装系列<b class='flag-5'>区别在哪</b>?

    云服务器和独立服务器的区别在哪?一文读懂如何选择

    面对云服务器与独立服务器的选择,许多人常因概念模糊而纠结。云服务器和独立服务器的区别在于资源分配方式、扩展性及成本结构,选择时需结合业务需求权衡利弊。本文将从两者核心差异进行对比,为大家提供参考依据。
    的头像 发表于 05-19 10:19 802次阅读

    全栈开发进阶指南:LuatOS-log库从入门到实战!

    本文将带你深入探索LuatOS系统中log库的核心原理与实战技巧,通过代码示例解析日志管理、错误追踪及性能优化的最佳实践,助力全栈工程师构建更稳健的物联网应用。 今天,我们一起来认识LuatOS
    的头像 发表于 05-15 16:12 2999次阅读
    全栈开发进阶指南:LuatOS-<b class='flag-5'>log</b>库从入门到实战!

    解锁LuatOS-log库:全栈工程师的日志管理实战课!

    针对全栈开发者设计的实战教程,本文聚焦LuatOS平台log库的高效使用,从基础配置到高级调试策略,手把手教你搭建可扩展的日志系统,提升项目维护效率。 今天,我们一起来认识LuatOS的log
    的头像 发表于 05-12 15:23 1632次阅读
    解锁LuatOS-<b class='flag-5'>log</b>库:全栈工程师的日志管理实战课!

    「银河讲堂」敏感器、检测器传和感器到底区别在哪? #电工知识

    电工
    银河电气
    发布于 :2025年05月06日 11:05:33