0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

log.Fatal和panic函數(shù)的區(qū)別在哪

冬至配餃子 ? 來源:GoLang全棧 ? 作者:小錕哥哥 ? 2022-08-17 11:01 ? 次閱讀

要熟悉兩者區(qū)別之前,需要先了解 os.Exit() 函數(shù)。

我這里截一張 Go 源碼里面的解釋:

pYYBAGL8WYuAMsUmAAC9AkxPSW4282.png

我們需要注意兩點(diǎn):

1、應(yīng)用程序會(huì)被馬上退出

2、defer 函數(shù)不會(huì)被執(zhí)行

你可以理解這就是直接 kill -9 程序,不給任何喘氣的機(jī)會(huì)。

現(xiàn)在我們?cè)賮砜纯?log.Fatal 函數(shù)的定義:

pYYBAGL8WZqAL15tAABXom8ng4c504.png

整體來說,他在 os.Exit() 之前做了一個(gè)日志輸出。

他的流程可以理解是:

1、打印輸出內(nèi)容

2、退出應(yīng)用程序

3、defer 函數(shù)還是不會(huì)執(zhí)行

最后我們來看下 panic 的定義:

pYYBAGL8WaiAO3JTAADTJcS_EVA507.png

我們需要注意的是:

1、當(dāng)前函數(shù)立刻會(huì)停止執(zhí)行(不是主程序)

2、defer 函數(shù)執(zhí)行

3、返回給調(diào)用者 caller

4、調(diào)用函數(shù)假裝也收到了 panic 函數(shù),從而他們也會(huì)執(zhí)行以上的操作

5、遞歸執(zhí)行,直到最上層函數(shù),如果都沒函數(shù)處理這個(gè)異常,應(yīng)用程序就會(huì)停止

這和其他語言里面的 try catch 很像,但是 Go 語言里面沒有類似的語法糖。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3237

    瀏覽量

    57547
  • go語言
    +關(guān)注

    關(guān)注

    1

    文章

    158

    瀏覽量

    9016
  • 調(diào)用函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    2295
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問一下LM4951A與LM4951的區(qū)別在哪里?

    請(qǐng)問一下LM4951A與LM4951的區(qū)別在哪里? 我們有將LM4951替換LM4951A后,產(chǎn)品出現(xiàn)POP和CLICK音的問題。 LM4951的原理圖見附件。
    發(fā)表于 10-18 06:27

    LM3886尾綴T和TF之間主要區(qū)別在哪里?

    LM3886尾綴T和TF之間主要區(qū)別在哪里? 我一直用LM3886TF,但最近缺貨改用LM3886T替代,但是發(fā)現(xiàn)LM3886T工作相對(duì)要熱一些
    發(fā)表于 10-09 08:30

    請(qǐng)問LM318和LM318-N的區(qū)別在哪里?

    請(qǐng)問LM318和LM318-N的區(qū)別在哪里?
    發(fā)表于 08-20 07:31

    TLV4112IDGN和TLV4112IDGN的主要區(qū)別在哪?

    TLV4112IDGN和TLV4112IDGN的主要區(qū)別在哪?
    發(fā)表于 08-05 07:47

    d類放大器和ab類區(qū)別在哪

    d類放大器和ab類區(qū)別在哪 在撰寫一篇關(guān)于D類放大器和AB類放大器區(qū)別的詳盡、詳實(shí)、細(xì)致的文章之前,我們首先需要了解這兩種放大器的基本概念、工作原理、優(yōu)缺點(diǎn)以及應(yīng)用場景。 標(biāo)題:D類放大器與AB類
    的頭像 發(fā)表于 06-10 15:48 ?610次閱讀

    erase before programing和blank check before programing在下載時(shí)區(qū)別在哪?

    請(qǐng)教erase before programing 和blank check before programing在下載時(shí)區(qū)別在哪?選erase before programing好像下載不進(jìn)去 報(bào)Erase not feasible
    發(fā)表于 04-29 08:34

    電池內(nèi)部短路與外部短路區(qū)別在哪

    電池內(nèi)部短路與外部短路區(qū)別在哪? 電池是一種能夠?qū)⒒瘜W(xué)能轉(zhuǎn)化為電能的裝置,廣泛應(yīng)用于電子設(shè)備、交通工具、儲(chǔ)能設(shè)備等領(lǐng)域。在使用電池過程中,可能會(huì)出現(xiàn)兩種類型的短路,分別是電池內(nèi)部短路和電池外部短路
    的頭像 發(fā)表于 02-18 15:29 ?2034次閱讀

    什么是PWM和SPWM波形?兩者的區(qū)別在哪?

    什么是PWM和SPWM波形?兩者的區(qū)別在哪? PWM(脈寬調(diào)制)和SPWM(正弦脈寬調(diào)制)都是常用于控制和調(diào)節(jié)電力設(shè)備的波形方法。它們的主要區(qū)別在于波形的形狀和應(yīng)用領(lǐng)域。下面我們將詳細(xì)介紹PWM
    的頭像 發(fā)表于 02-05 16:36 ?3394次閱讀

    溫補(bǔ)晶振和恒溫晶振的區(qū)別在哪?

    溫補(bǔ)晶振和恒溫晶振的區(qū)別在哪? 溫補(bǔ)晶振和恒溫晶振是電子行業(yè)中常見的兩種晶振器件,它們?cè)跍?zhǔn)確頻率輸出和穩(wěn)定性等方面有所不同。下面將詳細(xì)介紹這兩種晶振器的區(qū)別。 溫補(bǔ)晶振是指通過特定的溫度補(bǔ)償電路來
    的頭像 發(fā)表于 01-24 13:45 ?1015次閱讀

    SD-WAN帶寬與IDC帶寬的區(qū)別在哪?

    SD-WAN帶寬與IDC帶寬的區(qū)別在哪? 隨著云計(jì)算和大數(shù)據(jù)時(shí)代的到來,全球企業(yè)對(duì)網(wǎng)絡(luò)帶寬的需求不斷增加。在這方面,SD-WAN和IDC成為兩個(gè)重要的網(wǎng)絡(luò)解決方案。然而,SD-WAN帶寬和IDC帶寬
    的頭像 發(fā)表于 01-17 16:18 ?790次閱讀

    車載UPS與一般UPS區(qū)別在哪里?車載有哪些優(yōu)勢(shì)特點(diǎn)?

    車載UPS與一般UPS區(qū)別在哪里?車載有哪些優(yōu)勢(shì)特點(diǎn)? 車載UPS是一種特殊的不間斷電源系統(tǒng),專門設(shè)計(jì)用于車輛上使用的電子設(shè)備。與一般的UPS相比,車載UPS有一些獨(dú)特的特點(diǎn)和優(yōu)勢(shì)。下面將詳細(xì)探討
    的頭像 發(fā)表于 01-11 14:43 ?1167次閱讀

    接地電阻與接地阻抗的區(qū)別在哪

    接地電阻與接地阻抗的區(qū)別在哪里? 接地電阻是指接地系統(tǒng)中的電阻元件,通過連接到地下的電極與大地形成一個(gè)低阻抗路徑,用來確保接地系統(tǒng)的可靠性和安全性。而接地阻抗則更為復(fù)雜,它是指接地系統(tǒng)在交流電下
    的頭像 發(fā)表于 12-20 15:23 ?2866次閱讀

    普通開關(guān)和霍爾開關(guān)區(qū)別在哪里?

    普通開關(guān)和霍爾開關(guān)區(qū)別在哪里?? 普通開關(guān)和霍爾開關(guān)是兩種常用的電子開關(guān),它們?cè)诮Y(jié)構(gòu)、工作原理和應(yīng)用方面存在著一些重要的區(qū)別。 首先,普通開關(guān)是一種機(jī)械式開關(guān),它通常由一個(gè)活動(dòng)的手柄或按鈕控制。當(dāng)
    的頭像 發(fā)表于 12-18 15:28 ?815次閱讀

    異步電路和同步電路區(qū)別在哪?

    異步電路和同步電路區(qū)別在哪? 異步電路和同步電路是兩種不同的電路設(shè)計(jì)方法,它們?cè)诠δ堋⒐ぷ髟砗蛻?yīng)用領(lǐng)域上有著顯著的差異。下面將詳細(xì)介紹異步電路和同步電路的區(qū)別。 異步電路是一種電子電路,其中的各個(gè)
    的頭像 發(fā)表于 12-07 10:53 ?3240次閱讀

    append()和insert()函數(shù)區(qū)別

    在Python中, append() 和 insert() 是用于修改列表的兩個(gè)常用函數(shù)。這兩個(gè)函數(shù)的主要區(qū)別在于元素添加的位置和方式。 首先,讓我們來了解一下 append() 函數(shù)
    的頭像 發(fā)表于 11-21 14:44 ?2633次閱讀