日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【GoLang】GoLang 错误处理 -- 异常处理思路示例

發布時間:2025/1/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【GoLang】GoLang 错误处理 -- 异常处理思路示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼:

package mainimport ("fmt"// "testing" )var Pkg = "packageName"type Err struct {Pkg stringInfo stringPrev error }func (e *Err) Error() string {if e.Prev == nil {return fmt.Sprintf("%s: %s", e.Pkg, e.Info)}return fmt.Sprintf("%s: %s\n%v", e.Pkg, e.Info, e.Prev) }func me(err error, format string, args ...interface{}) *Err {if len(args) > 0 {return &Err{Pkg: Pkg,Info: fmt.Sprintf(format, args...),Prev: err,}}return &Err{Pkg: Pkg,Info: format,Prev: err,} }func ce(err error, format string, args ...interface{}) {if err != nil {panic(me(err, format, args...))} }func ct(err *error) {if p := recover(); p != nil {if e, ok := p.(error); ok {*err = e} else {panic(p)}} }func oe(e error) error {var ret error = efor err, ok := ret.(*Err); ok && err.Prev != nil; err, ok = ret.(*Err) {ret = err.Prev}return ret }func foo() (err error) {defer ct(&err)ce(bar(), "call bar")return }func bar() (err error) {defer ct(&err)ce(baz(), "call baz")return }func baz() (err error) {return me(nil, "baz") }func main() {ce(foo(), "call foo") }

?

輸出:

panic: packageName: call foo packageName: call bar packageName: call baz packageName: bazgoroutine 1 [running]: panic(0x491000, 0xc420016300)/opt/golang/go/src/runtime/panic.go:500 +0x1a1 main.ce(0x4f9140, 0xc4200162d0, 0x4a741f, 0x8, 0x0, 0x0, 0x0)/opt/golang/workspace/src/github.com/junneyang/letsgo/error_test/error_common.go:40 +0x97 main.main()/opt/golang/workspace/src/github.com/junneyang/letsgo/error_test/error_common.go:79 +0x69 Error: process exited with code 2.

?

參考資料:

http://reusee.github.io/post/error-handling/

https://github.com/reusee/codes/blob/master/err/err.go

https://github.com/golang/go/blob/master/src/encoding/gob/error.go

?

總結

以上是生活随笔為你收集整理的【GoLang】GoLang 错误处理 -- 异常处理思路示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。