Go 語言基礎——錯誤處理

學習目標

掌握錯誤處理函數

掌握自定義錯誤處理學習

掌握defer關鍵字的使用code


錯誤處理

GO沒有異常處理機制接口

Go語言引入了一個關於錯誤處理的標準模式,即error接口,該接口的定義以下: type error interface {string

​ Error() stringit

}io

能夠經過errors.New快速建立錯誤實例class

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

//調用時的代碼建議按以下方式處理錯誤狀況: 
n, err := Foo(0)  
 
if err != nil {    
    // 錯誤處理 
} else {    
    // 使用返回值n  
}

自定義error類型

defer關鍵字

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程序

一個函數中能夠存在多個defer語句error

defer語句的調用是遵守 先進後出的原則,即後一個defer語句將先被執行。

painc與recover

panic用於不能夠恢復的錯誤

panic退出前會執行defer指定的內容

錯誤恢復

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

os.Exit 退出

os.Exit直接終止程序不會調用defer指定的函數

os.Exit退出時不會輸出當前用調用棧信息

相關文章
相關標籤/搜索