欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言異常處理error、panic、recover的使用

 更新時(shí)間:2024年08月20日 11:34:49   作者:吃我一個(gè)平底鍋  
GO語言中引入的異常的處理方式為error、panic、recover ,本文主要介紹了Go語言異常處理error、panic、recover的使用,感興趣的可以了解一下

異常處理

Go 語言引入了一個(gè)關(guān)于錯(cuò)誤處理的標(biāo)準(zhǔn)模式,即 error 接口,它是 Go 語言內(nèi)建的接口類型,該接口的定義如下:

package errors

func New(text string) error {
	return &errorString{text}
}

// errorString is a trivial implementation of error.
type errorString struct {
	s string
}

func (e *errorString) Error() string {
	return e.s
}
  • 通過fmt包進(jìn)行使用errorf接口
  • 通過自帶的errors包進(jìn)行調(diào)用

在這里插入圖片描述

常用在我們對(duì)檢測(cè)程序是否正常

在這里插入圖片描述

panic

在通常情況下,向程序使用方報(bào)告錯(cuò)誤狀態(tài)的方式可以是返回一個(gè)額外的 error 類型值。
但是,當(dāng)遇到不可恢復(fù)的錯(cuò)誤狀態(tài)的時(shí)候,如數(shù)組訪問越界、空指針引用等,這些運(yùn)行時(shí)錯(cuò)誤會(huì)引起 painc 異常。在一般情況下,我們不使用 panic 函數(shù)來報(bào)告普通的錯(cuò)誤,而應(yīng)該只把它作為報(bào)告致命錯(cuò)誤的一種方式。當(dāng)某些不應(yīng)該發(fā)生的場(chǎng)景發(fā)生時(shí),就調(diào)用panic。
一般而言,當(dāng) panic異常發(fā)生時(shí),程序會(huì)中斷運(yùn)行,并立即執(zhí)行在該 goroutine(可以先理解成線程,在中被延遲的函數(shù)(defer機(jī)制)。隨后,程序崩潰并輸出日志信息。日志信息包括 panic value 和函數(shù)調(diào)用的堆棧跟蹤信息。
不是所有的 panic 異常都來自運(yùn)行時(shí),直接調(diào)用內(nèi)置的 panic 函數(shù)也會(huì)引發(fā) panic 異常: panic函數(shù)接受任何值作為參數(shù)。

func panic(v interface{})

直接調(diào)用panic函數(shù)

直接調(diào)用內(nèi)置的 panic 函數(shù)也會(huì)引發(fā) panic 異常。

在這里插入圖片描述

數(shù)組越界導(dǎo)致panic

在這里插入圖片描述

recover

運(yùn)行時(shí) panc 異常一旦被引發(fā)就會(huì)導(dǎo)致程序崩潰。Go語言為我們提供了專用于“攔截”運(yùn)行時(shí) panic 的內(nèi)建所數(shù)–recover。它可以是當(dāng)前的程序從運(yùn)行時(shí) panic 的狀態(tài)中恢復(fù)并重新獲得流程控制權(quán)。

fune recover()interface{}

注意:recover只有在defer調(diào)用的所數(shù)中有效。

如果調(diào)用了內(nèi)置函數(shù)recover,并且定義該 defer 語句的函數(shù)發(fā)生了 panic 異常,recover 會(huì)使程序從 panic 中恢復(fù),并返回 panic value。導(dǎo)致panic 異常的函數(shù)不會(huì)繼續(xù)運(yùn)行,但能正常返回。在未發(fā)生 panic 時(shí)調(diào)用recover,recover 會(huì)返回 nil。

在這里插入圖片描述

到此這篇關(guān)于Go語言異常處理error、panic、recover的使用的文章就介紹到這了,更多相關(guān)Go語言異常處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Go語言實(shí)現(xiàn)切片增刪改查的示例代碼

    Go語言實(shí)現(xiàn)切片增刪改查的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Go語言中切片的使用(增刪改查),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語言有一定的幫助,需要的可以參考一下
    2022-04-04
  • golang使用http client發(fā)起get和post請(qǐng)求示例

    golang使用http client發(fā)起get和post請(qǐng)求示例

    這篇文章主要介紹了golang使用http client發(fā)起get和post請(qǐng)求示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Go語言實(shí)現(xiàn)登錄驗(yàn)證代碼案例

    Go語言實(shí)現(xiàn)登錄驗(yàn)證代碼案例

    這篇文章主要介紹了Go語言實(shí)現(xiàn)登錄驗(yàn)證代碼案例,代碼和圖文講解的很清晰,有感興趣的可以學(xué)習(xí)下
    2021-03-03
  • go語言VScode?see?'go?help?modules'?(exit?status?1)問題的解決過程

    go語言VScode?see?'go?help?modules'?(exit?statu

    最近上手學(xué)習(xí)go語言,準(zhǔn)備在VSCode上寫程序的時(shí)候卻發(fā)現(xiàn)出了一點(diǎn)問題,下面這篇文章主要給大家介紹了關(guān)于go語言VScode?see?'go?help?modules'(exit?status?1)問題的解決過程,需要的朋友可以參考下
    2022-07-07
  • 深入了解Golang官方container/list原理

    深入了解Golang官方container/list原理

    在?Golang?的標(biāo)準(zhǔn)庫?container?中,包含了幾種常見的數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn),其實(shí)是非常好的學(xué)習(xí)材料,本文主要為大家介紹了container/list的原理與使用,感興趣的可以了解一下
    2023-08-08
  • Go語言壓縮和解壓縮tar.gz文件的方法

    Go語言壓縮和解壓縮tar.gz文件的方法

    這篇文章主要介紹了Go語言壓縮和解壓縮tar.gz文件的方法,實(shí)例分析了使用Go語言壓縮文件與解壓文件的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • Go語言中int、float、string類型之間相互的轉(zhuǎn)換

    Go語言中int、float、string類型之間相互的轉(zhuǎn)換

    golang是強(qiáng)類型語言,在應(yīng)用過程中類型轉(zhuǎn)換基本都會(huì)用到,下面這篇文章主要給大家介紹了關(guān)于Go語言中int、float、string類型相互之間的轉(zhuǎn)換,需要的朋友可以參考下
    2022-01-01
  • Go 中閉包的底層原理

    Go 中閉包的底層原理

    這篇文章主要介紹了Go 中閉包的底層原理,閉包的基本原理是一種現(xiàn)象,一個(gè)函數(shù)內(nèi)引用了外部的局部變量的現(xiàn)象,帶著些許的了解和小編一起進(jìn)入文章正題學(xué)習(xí)
    2021-10-10
  • 如何使用golang實(shí)現(xiàn)traceroute

    如何使用golang實(shí)現(xiàn)traceroute

    這篇文章主要介紹了如何使用golang實(shí)現(xiàn)traceroute,該工具在linux環(huán)境下的命令是traceroute或者tracepath,在windows下命令是tracert,本文給大家詳細(xì)講解需要的朋友可以參考下
    2023-04-04
  • Golang?HTTP服務(wù)超時(shí)控制實(shí)現(xiàn)原理分析

    Golang?HTTP服務(wù)超時(shí)控制實(shí)現(xiàn)原理分析

    這篇文章主要介紹了Golang?HTTP服務(wù)超時(shí)控制實(shí)現(xiàn)原理,HTTP服務(wù)的超時(shí)控制是保障服務(wù)高可用性的重要措施之一,由于HTTP服務(wù)可能會(huì)遇到網(wǎng)絡(luò)延遲,資源瓶頸等問題,因此需要對(duì)請(qǐng)求進(jìn)行超時(shí)控制,以避免服務(wù)雪崩等問題,需要的朋友可以參考下
    2023-05-05

最新評(píng)論