GoFrame錯(cuò)誤處理常用方法及錯(cuò)誤碼使用示例
前言
這篇文章將為大家介紹:GoFrame 錯(cuò)誤處理的常用方法&錯(cuò)誤碼的使用。如何自定義錯(cuò)誤對(duì)象、如何忽略部分堆棧信息、如何自定義錯(cuò)誤碼的返回、如何獲取error對(duì)象中的錯(cuò)誤碼。
錯(cuò)誤創(chuàng)建
New/Newf
用于創(chuàng)建一個(gè)自定義錯(cuò)誤信息的error對(duì)象,并包含堆棧信息。
New(text string) error Newf(format string, args ...interface{}) error
Wrap/Wrapf
用于包裹其他錯(cuò)誤error對(duì)象,構(gòu)造成多級(jí)的錯(cuò)誤信息,包含堆棧信息。
func Wrap(err error, text string) error func Wrapf(err error, format string, args ...interface{}) error
NewSkip/NewSkipf
用于創(chuàng)建一個(gè)自定義錯(cuò)誤信息的error對(duì)象,并且忽略部分堆棧信息(按照當(dāng)前調(diào)用方法位置往上忽略)。高級(jí)功能,一般開(kāi)發(fā)者很少用得到。
func NewSkip(skip int, text string) error func NewSkipf(skip int, format string, args ...interface{}) error
錯(cuò)誤碼使用
錯(cuò)誤碼相關(guān)方法概覽
func NewCode(code int, text string) error func NewCodef(code int, format string, args ...interface{}) error func NewCodeSkip(code, skip int, text string) error func NewCodeSkipf(code, skip int, format string, args ...interface{}) error func WrapCode(code int, err error, text string) error func WrapCodef(code int, err error, format string, args ...interface{}) error
NewCode/NewCodef
功能同New/Newf方法,用于創(chuàng)建一個(gè)自定義錯(cuò)誤信息的error對(duì)象,并包含堆棧信息,并增加錯(cuò)誤碼對(duì)象的輸入。
NewCode(code gcode.Code, text ...string) error NewCodef(code gcode.Code, format string, args ...interface{}) error
示例代碼
func ExampleNewCode() { err := gerror.NewCode(gcode.New(101, "", nil), "My Error") fmt.Println(err.Error()) // My Error fmt.Println(gerror.Code(err)) //101 } func ExampleNewCodef() { err := gerror.NewCodef(gcode.New(101, "", nil), "It's %s", "My Error") fmt.Println(err.Error()) //It's My Error fmt.Println(gerror.Code(err).Code()) //101 }
WrapCode/WrapCodef
功能同Wrap/Wrapf方法,用于包裹其他錯(cuò)誤error對(duì)象,構(gòu)造成多級(jí)的錯(cuò)誤信息,包含堆棧信息,并增加錯(cuò)誤碼參數(shù)的輸入。
WrapCode(code gcode.Code, err error, text ...string) error WrapCodef(code gcode.Code, err error, format string, args ...interface{}) error
示例代碼
func ExampleWrapCode() { err1 := errors.New("permission denied") err2 := gerror.WrapCode(gcode.New(403, "", nil), err1, "Custom Error") fmt.Println(err2.Error()) // Custom Error: permission denied fmt.Println(gerror.Code(err2).Code()) // 403 } func ExampleWrapCodef() { err1 := errors.New("permission denied") err2 := gerror.WrapCodef(gcode.New(403, "", nil), err1, "It's %s", "Custom Error") fmt.Println(err2.Error()) // It's Custom Error: permission denied fmt.Println(gerror.Code(err2).Code()) // 403 }
NewCodeSkip/NewCodeSkipf
功能同NewSkip/NewSkipf,用于創(chuàng)建一個(gè)自定義錯(cuò)誤信息的error對(duì)象,并且忽略部分堆棧信息(按照當(dāng)前調(diào)用方法位置往上忽略),并增加錯(cuò)誤參數(shù)輸入。
func NewCodeSkip(code, skip int, text string) error func NewCodeSkipf(code, skip int, format string, args ...interface{}) error
獲取error中的錯(cuò)誤碼接口
func Code(err error) gcode.Code
當(dāng)給定的error參數(shù)不帶有錯(cuò)誤碼信息時(shí),該方法返回預(yù)定義的錯(cuò)誤碼gcode.CodeNil
總結(jié)
通過(guò)這篇文章我們了解到使用GoFrame,如何自定義錯(cuò)誤對(duì)象、如何忽略部分堆棧信息、如何自定義錯(cuò)誤碼的返回、如何獲取error對(duì)象中的錯(cuò)誤碼。
以上就是GoFrame錯(cuò)誤處理常用方法及錯(cuò)誤碼使用示例的詳細(xì)內(nèi)容,更多關(guān)于GoFrame錯(cuò)誤處理錯(cuò)誤碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- GoFrame框架使用避坑指南和實(shí)踐干貨
- GoFrame?gmap遍歷hashmap?listmap?treemap使用技巧
- GoFrame?gredis配置文件及配置方法對(duì)比
- 適合PHP同學(xué)的GoFrame框架使用體驗(yàn)及學(xué)習(xí)建議
- GoFrame?ORM原生方法操作示例
- GoFrame 框架緩存查詢結(jié)果的示例詳解
- GoFrame框架Scan類型轉(zhuǎn)換實(shí)例
- GoFrame通用類型變量gvar與interface基本使用對(duì)比
- GoFrame框架數(shù)據(jù)校驗(yàn)之校驗(yàn)對(duì)象校驗(yàn)結(jié)構(gòu)體
- GoLang編程必備:GoFrame?GoLand插件介紹
相關(guān)文章
深入探討Golang中如何進(jìn)行并發(fā)發(fā)送HTTP請(qǐng)求
在?Golang?領(lǐng)域,并發(fā)發(fā)送?HTTP?請(qǐng)求是優(yōu)化?Web?應(yīng)用程序的一項(xiàng)重要技能,本文探討了實(shí)現(xiàn)此目的的各種方法,文中的示例代碼講解詳細(xì),希望對(duì)大家有所幫助2024-01-01Go語(yǔ)言并發(fā)編程之控制并發(fā)數(shù)量實(shí)現(xiàn)實(shí)例
這篇文章主要為大家介紹了Go語(yǔ)言并發(fā)編程之控制并發(fā)數(shù)量實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Golang設(shè)計(jì)模式中抽象工廠模式詳細(xì)講解
抽象工廠模式用于生成產(chǎn)品族的工廠,所生成的對(duì)象是有關(guān)聯(lián)的。如果抽象工廠退化成生成的對(duì)象無(wú)關(guān)聯(lián)則成為工廠函數(shù)模式。比如本例子中使用RDB和XML存儲(chǔ)訂單信息,抽象工廠分別能生成相關(guān)的主訂單信息和訂單詳情信息2023-01-01簡(jiǎn)單聊聊為什么說(shuō)Go語(yǔ)言字符串是不可變的
最近有讀者留言說(shuō),平時(shí)在寫代碼的過(guò)程中,是會(huì)對(duì)字符串進(jìn)行修改的,但網(wǎng)上都說(shuō) Go 語(yǔ)言字符串是不可變的,這是為什么呢,本文就來(lái)和大家簡(jiǎn)單講講2023-05-05go高并發(fā)時(shí)append方法偶現(xiàn)錯(cuò)誤解決分析
這篇文章主要為大家介紹了go高并發(fā)時(shí)append方法偶現(xiàn)錯(cuò)誤解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10使用golang如何優(yōu)雅的關(guān)機(jī)或重啟操作示例
這篇文章主要為大家介紹了使用golang如何優(yōu)雅的關(guān)機(jī)或重啟操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04Go語(yǔ)言題解LeetCode268丟失的數(shù)字示例詳解
這篇文章主要為大家介紹了Go語(yǔ)言題解LeetCode268丟失的數(shù)字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12