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

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

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

異常處理

Go 語言引入了一個關(guān)于錯誤處理的標(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)用

在這里插入圖片描述

常用在我們對檢測程序是否正常

在這里插入圖片描述

panic

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

func panic(v interface{})

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

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

在這里插入圖片描述

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

在這里插入圖片描述

recover

運(yùn)行時 panc 異常一旦被引發(fā)就會導(dǎo)致程序崩潰。Go語言為我們提供了專用于“攔截”運(yùn)行時 panic 的內(nèi)建所數(shù)–recover。它可以是當(dāng)前的程序從運(yùn)行時 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 會使程序從 panic 中恢復(fù),并返回 panic value。導(dǎo)致panic 異常的函數(shù)不會繼續(xù)運(yùn)行,但能正常返回。在未發(fā)生 panic 時調(diào)用recover,recover 會返回 nil。

在這里插入圖片描述

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

相關(guān)文章

  • golang通過反射設(shè)置結(jié)構(gòu)體變量的值

    golang通過反射設(shè)置結(jié)構(gòu)體變量的值

    這篇文章主要介紹了golang通過反射設(shè)置結(jié)構(gòu)體變量的值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go切片導(dǎo)致rand.Shuffle產(chǎn)生重復(fù)數(shù)據(jù)的原因與解決方案

    Go切片導(dǎo)致rand.Shuffle產(chǎn)生重復(fù)數(shù)據(jù)的原因與解決方案

    在 Go 語言的實(shí)際開發(fā)中,切片(slice)是一種非常靈活的數(shù)據(jù)結(jié)構(gòu),然而,由于其底層數(shù)據(jù)共享的特性,在某些情況下可能會導(dǎo)致意想不到的 Bug,本文將詳細(xì)分析 rand.Shuffle 之后,切片中的數(shù)據(jù)出現(xiàn)重復(fù)的問題,探討其根本原因,并給出最佳解決方案,需要的朋友可以參考下
    2025-02-02
  • go+redis實(shí)現(xiàn)消息隊列發(fā)布與訂閱的詳細(xì)過程

    go+redis實(shí)現(xiàn)消息隊列發(fā)布與訂閱的詳細(xì)過程

    這篇文章主要介紹了go+redis實(shí)現(xiàn)消息隊列發(fā)布與訂閱,redis做消息隊列的缺點(diǎn):沒有持久化,一旦消息沒有人消費(fèi),積累到一定程度后就會丟失,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Go實(shí)現(xiàn)雙向鏈表的示例代碼

    Go實(shí)現(xiàn)雙向鏈表的示例代碼

    這篇文章主要介紹了Go實(shí)現(xiàn)雙向鏈表的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 深入了解Go的interface{}底層原理實(shí)現(xiàn)

    深入了解Go的interface{}底層原理實(shí)現(xiàn)

    本文主要介紹了Go的interface{}底層原理實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • golang項(xiàng)目如何上線部署到Linu服務(wù)器(方法詳解)

    golang項(xiàng)目如何上線部署到Linu服務(wù)器(方法詳解)

    這篇文章主要介紹了golang項(xiàng)目如何上線部署到Linu服務(wù)器,本文通過兩種方法給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Golang switch語句的具體使用

    Golang switch語句的具體使用

    switch 語句提供了一種簡潔的方式來執(zhí)行多路分支選擇,本文主要介紹了Golang switch語句的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Golang動態(tài)數(shù)組的實(shí)現(xiàn)示例

    Golang動態(tài)數(shù)組的實(shí)現(xiàn)示例

    動態(tài)數(shù)組能自動調(diào)整大小,與靜態(tài)數(shù)組不同,其大小不固定,可根據(jù)需求變化,實(shí)現(xiàn)通常依賴于數(shù)據(jù)結(jié)構(gòu)如鏈表或數(shù)組加額外信息,本文就來介紹一下Golang動態(tài)數(shù)組的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-10-10
  • 深入理解Go語言中的Dispatcher

    深入理解Go語言中的Dispatcher

    最近看到了Go語言中的Dispatcher,但是在網(wǎng)上發(fā)現(xiàn)資料非常少,所以想著總結(jié)處理分享給大家,下面這篇文章主要給大家深入的介紹Go語言中Dispatcher的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • go的切片擴(kuò)容機(jī)制詳解

    go的切片擴(kuò)容機(jī)制詳解

    本文主要介紹了go的切片擴(kuò)容機(jī)制詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評論