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

    文章

    3342

    浏览量

    59923
  • go语言
    +关注

    关注

    1

    文章

    159

    浏览量

    9625
  • 调用函数
    +关注

    关注

    0

    文章

    11

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

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

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

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

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

    恩智浦解读Zephyr log系统的使用 Zephyr的shell和log功能介绍

    之前 我们从 0 开始新建了一个简单的 Zephyr 应用- 从0开始打造属于自己的HelloWorld ,本期就 带着大家熟悉一下 Zephyr 的 shell 和 log 系统。 首先给大家介绍
    的头像 发表于 02-27 09:19 1708次阅读
    恩智浦解读Zephyr <b class='flag-5'>log</b>系统的使用 Zephyr的shell和<b class='flag-5'>log</b>功能介绍

    DLPA3000是否与DLPA3005管脚兼容?是否可以直接替换?

    如题,DLPA3000是否与DLPA3005管脚兼容?是否可以直接替换? 如果不能,区别在哪
    发表于 02-20 06:08

    工控机与普通台式机的区别大揭秘

    是不是很多人都好奇工控机与普通台式机的区别在哪里呢,今天这篇文章,就解答您的疑惑。
    的头像 发表于 02-17 16:06 1195次阅读

    这个华为基站腔体滤波器的抽头、频率调谐杆、耦合调谐杆分别在哪里?

    下图这个华为基站腔体滤波器的抽头、频率调谐杆、耦合调谐杆分别在哪里?能否请大佬用圆圈箭头标注一下,万分感谢。
    发表于 02-13 21:39

    电路里高频和高速的区别在哪

    在电子电路领域,“高频” 和 “高速” 是两个经常被提及的术语,它们对于电路的设计、性能以及应用场景有着深远影响。然而,许多人常常混淆这两个概念,实际上它们有着本质的区别。 首先来谈谈高频。高频通常
    的头像 发表于 02-05 14:27 1221次阅读

    ads1258 IRTCR和IRTCT的区别是什么?

    请教:ads1258 IRTCR和IRTCT的区别在哪?手册里没看明白,TCR和TCRG4的区别应该是有铅和无铅。多谢
    发表于 01-10 10:23

    请问ADS7953SBRHBT和ADS7953SRHBT型号中这个B的区别是什么?

    如题,一个后缀是SBRHBT,另一个是SRHBT 区别在哪?在官网找了好久没找到。
    发表于 12-26 08:10

    SN74ALVC164245与SNALVC164245-EP区别在哪里呢?

    SN74ALVC164245与它的增强型器件SNALVC164245-EP区别在哪里呢?我对比了数据手册发现两种产品在电气性能上并没有什么差别,这个“增强”体现在哪里?
    发表于 12-12 08:31