要熟悉两者区别之前,需要先了解 os.Exit() 函数。
我这里截一张 Go 源码里面的解释:
我们需要注意两点:
1、应用程序会被马上退出
2、defer 函数不会被执行
你可以理解这就是直接 kill -9 程序,不给任何喘气的机会。
现在我们再来看看 log.Fatal 函数的定义:
整体来说,他在 os.Exit() 之前做了一个日志输出。
他的流程可以理解是:
1、打印输出内容
2、退出应用程序
3、defer 函数还是不会执行
最后我们来看下 panic 的定义:
我们需要注意的是:
1、当前函数立刻会停止执行(不是主程序)
2、defer 函数执行
3、返回给调用者 caller
4、调用函数假装也收到了 panic 函数,从而他们也会执行以上的操作
5、递归执行,直到最上层函数,如果都没函数处理这个异常,应用程序就会停止
这和其他语言里面的 try catch 很像,但是 Go 语言里面没有类似的语法糖。
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
应用程序
+关注
关注
37文章
3126浏览量
56315 -
go语言
+关注
关注
1文章
156浏览量
8919 -
调用函数
+关注
关注
0文章
11浏览量
2257
发布评论请先 登录
相关推荐
什么是PWM和SPWM波形?两者的区别在哪?
什么是PWM和SPWM波形?两者的区别在哪? PWM(脉宽调制)和SPWM(正弦脉宽调制)都是常用于控制和调节电力设备的波形方法。它们的主要区别在于波形的形状和应用领域。下面我们将详细介绍PWM
温补晶振和恒温晶振的区别在哪?
温补晶振和恒温晶振的区别在哪? 温补晶振和恒温晶振是电子行业中常见的两种晶振器件,它们在准确频率输出和稳定性等方面有所不同。下面将详细介绍这两种晶振器的区别。 温补晶振是指通过特定的温度补偿电路
变阻二极管与普通二极管的区别在哪?
变阻二极管与普通二极管的区别在哪? 在日常生活和电子产品中,我们经常会遇到二极管。二极管是一种常见的电子器件,旨在控制电流的流动方向。值得注意的是,二极管分为多种类型,其中最常见的是普通二极管
防水变压器跟防雨变压器的区别在哪里?
防水变压器跟防雨变压器的区别在哪里? 防水变压器和防雨变压器都是为了保护变压器免受雨水侵蚀的设备,在某种程度上它们有共同之处,但也有一些区别。本文将详细探讨防水变压器和防雨变压器的区别。 首先,我们
普通开关和霍尔开关区别在哪里?
普通开关和霍尔开关区别在哪里? 普通开关和霍尔开关是两种常用的电子开关,它们在结构、工作原理和应用方面存在着一些重要的区别。 首先,普通开关是一种机械式开关,它通常由一个活动的手柄或按钮控制
异步电路和同步电路区别在哪?
异步电路和同步电路区别在哪? 异步电路和同步电路是两种不同的电路设计方法,它们在功能、工作原理和应用领域上有着显著的差异。下面将详细介绍异步电路和同步电路的区别。 异步电路是一种电子电路,其中的各个
什么是工业级晶振?跟普通晶振区别在哪?
晶振行业的人就都知道晶振分类很多,虽说使用工业级晶振的客户朋友没有普通晶振那么多,但是也有不少客户朋友咨询。说到这里可能有的人就要问到了:什么是工业级晶振?跟普通晶振区别在哪?相较之下有什么特点吗?
PLL和DLL都是锁相环,区别在哪里?
PLL和DLL都是锁相环,区别在哪里? PLL和DLL都是常用的锁相环(Phase Locked Loop)结构,在电路设计中具有广泛的应用。它们的共同作用是将输入信号和参考信号的相位差控制在一定
Linux Kernel Panic的产生的原因?
链,在panic log的前面几行已经显示了kernel panic的代码位置,但这个位置是相对于产生panic函数的偏移,你并不知道它到底
发表于 06-15 06:24
陶瓷、高频、普通PCB板材区别在哪?
陶瓷、高频、普通PCB板材区别在哪?
(以下文字均从网络转载,欢迎大家补充,指正。)
陶瓷基板是特种pcb板材的一种,具有很好的导热效果,绝缘性能,以及较高的介电常数,在散热领域终端产品使用广泛
发表于 06-06 14:41
评论