Go 錯誤處理

2022-07-16 17:30:19 字數 1143 閱讀 2981

·  error型別是乙個介面型別,也是乙個go語言的內建型別。在這個介面型別的宣告中只包含了乙個方法error。這個方法不接受任何引數,但是會返回乙個string型別的結果。它的作用是返回錯誤資訊的字串表示形象。我們使用error型別的方式通常是,在函式宣告結果列表的最後,宣告乙個該型別的結果。同時在呼叫這個函式之後,先判斷它返回的最後乙個結果是否"不為nil"。如果不為nil那麼就進入錯誤處理流程,否則就繼續進行正常的流程。

package main

import (

"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) error 

return 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...