掌握錯誤處理函數
掌握自定義錯誤處理學習
掌握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 }
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語句將先被執行。
panic用於不能夠恢復的錯誤
panic退出前會執行defer指定的內容
錯誤恢復
defer func() { if err :=recover();err != nil { //恢復錯誤 } }()
os.Exit 退出
os.Exit直接終止程序不會調用defer指定的函數
os.Exit退出時不會輸出當前用調用棧信息