· error型別是乙個介面型別,也是乙個go語言的內建型別。在這個介面型別的宣告中只包含了乙個方法error。這個方法不接受任何引數,但是會返回乙個string型別的結果。它的作用是返回錯誤資訊的字串表示形象。我們使用error型別的方式通常是,在函式宣告結果列表的最後,宣告乙個該型別的結果。同時在呼叫這個函式之後,先判斷它返回的最後乙個結果是否"不為nil"。如果不為nil那麼就進入錯誤處理流程,否則就繼續進行正常的流程。
package mainimport (
"errors""
fmt"
)func echo(request
string) (response string
, err error)
response = fmt.sprintf("
echo: %s
", request)
return
//err值為nil
}func main()
fmt.printf(
"response: %s\n
", resp)
}}
由於error是乙個介面型別,所以即使同為error型別的錯誤值,它們的實際型別也可能不同。怎樣判斷乙個錯誤值具體代表的是哪一類錯誤呢?
1)對於型別在已知範圍內的一系列錯誤值,一般使用型別斷言表示式或型別switch語句來判斷
2)對於已有相應變數且型別相同的一系列錯誤值,一般直接使用判等操作來判斷
3)對於沒有響應變數且型別未知的一系列錯誤值,只能使用其錯誤資訊的字串表示形式來做判斷
func underlyingerror(err error) errorreturn err //
直接把函式引數值返回
}printerror := func(i int
, err error)
err =underlyingerror(err)
switch
err
}
構建錯誤體系的基本方式有兩種:
1)用型別建立起樹形結構的錯誤體系,用統一字段建立起可追根溯源的鏈式錯誤關聯。
2)預先建立一些代表已知錯誤的錯誤值
譯 go錯誤處理
func open name string file file,err error 下面的 使用os.open來開啟乙個檔案。如果出現錯誤,會呼叫log.fatal列印出錯誤的資訊並且終止 f,err os.open filename.etx if err nil do something with...
譯 go錯誤處理
func open name string file file,err error 下面的 使用os.open來開啟乙個檔案。如果出現錯誤,會呼叫log.fatal列印出錯誤的資訊並且終止 f,err os.open filename.etx if err nil do something with...
譯 go錯誤處理
func open name string file file,err error 下面的 使用os.open來開啟乙個檔案。如果出現錯誤,會呼叫log.fatal列印出錯誤的資訊並且終止 f,err os.open filename.etx if err nil do something with...