溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Go 語言的錯誤處理有哪些

發(fā)布時間:2021-10-20 16:03:47 來源:億速云 閱讀:101 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了Go 語言的錯誤處理有哪些,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

學(xué)習(xí)目標

掌握錯誤處理

掌握自定義錯誤處理

掌握defer關(guān)鍵字的使用


錯誤處理

GO沒有異常處理機制

Go語言引入了一個關(guān)于錯誤處理的標準模式,即error接口,該接口的定義如下: type error interface {

Error() string

}

可以通過errors.New快速創(chuàng)建錯誤實例

errors.New("錯誤信息")
func Foo(param int)(n int, err error) {     
    // ...  
} 

//調(diào)用時的代碼建議按如下方式處理錯誤情況: 
n, err := Foo(0)  
 
if err != nil {    
    // 錯誤處理 
} else {    
    // 使用返回值n  
}
自定義error類型
defer關(guān)鍵字
func CopyFile(dst, src string) (w int64, err error) {     
    srcFile, err := os.Open(src)     
    if err != nil {         
        return     
    } 
 
    defer srcFile.Close() 
 
    dstFile, err := os.Create(dstName)     
    if err != nil {         
        return     
    } 
 
    defer dstFile.Close() 
 
    return io.Copy(dstFile, srcFile)  
}

類似于Java中的finally

一個函數(shù)中可以存在多個defer語句

defer語句的調(diào)用是遵照 先進后出的原則,即后一個defer語句將先被執(zhí)行。

painc與recover

panic用于不可以恢復(fù)的錯誤

panic退出前會執(zhí)行defer指定的內(nèi)容

錯誤恢復(fù)

defer func() {
    if err :=recover();err != nil { 
    //恢復(fù)錯誤
	}
}()

os.Exit 退出

os.Exit直接終止程序不會調(diào)用defer指定的函數(shù)

os.Exit退出時不會輸出當(dāng)前用調(diào)用棧信息

上述內(nèi)容就是Go 語言的錯誤處理有哪些,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

go
AI