go的錯誤處理

2022-09-05 16:21:12 字數 601 閱讀 5917

錯誤需要開發者主動捕獲,同時只能獲取是什麼錯誤,無法獲悉呼叫棧(確定具體哪一行,也就是不知道那行出了錯誤)

_,err := func()

if err != nil

type myerr struct{}

func (myerr *myerr) error() error

errors.withmessage(err,"bar failed") 只能攜帶原始錯誤資訊

errors.withstack(err) //不攜帶原始錯誤資訊,保留完整的呼叫棧

errors.wrap(err,"custom message") //攜帶原始錯誤資訊, 還能盡量保留完整的呼叫棧

fmt.printf("data not found, %v\n", err)

fmt.printf("%+v\n", err)

使用 %v 作為格式化引數,那麼錯誤資訊會保持一行, 其中依次包含呼叫棧的上下文文字。使用 %+v ,則會輸出完整的呼叫棧詳情。如果不需要增加額外上下文資訊,僅附加呼叫棧後返回,可以使用 withstack 方法

Go 錯誤處理

error型別是乙個介面型別,也是乙個go語言的內建型別。在這個介面型別的宣告中只包含了乙個方法error。這個方法不接受任何引數,但是會返回乙個string型別的結果。它的作用是返回錯誤資訊的字串表示形象。我們使用error型別的方式通常是,在函式宣告結果列表的最後,宣告乙個該型別的結果。同時在呼...

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