網站首頁 編程語言 正文
前言
這篇文章將為大家介紹:GoFrame 錯誤處理的常用方法&錯誤碼的使用。如何自定義錯誤對象、如何忽略部分堆棧信息、如何自定義錯誤碼的返回、如何獲取error對象中的錯誤碼。
錯誤創建
New/Newf
用于創建一個自定義錯誤信息的error對象,并包含堆棧信息。
New(text string) error Newf(format string, args ...interface{}) error
Wrap/Wrapf
用于包裹其他錯誤error對象,構造成多級的錯誤信息,包含堆棧信息。
func Wrap(err error, text string) error func Wrapf(err error, format string, args ...interface{}) error
NewSkip/NewSkipf
用于創建一個自定義錯誤信息的error對象,并且忽略部分堆棧信息(按照當前調用方法位置往上忽略)。高級功能,一般開發者很少用得到。
func NewSkip(skip int, text string) error func NewSkipf(skip int, format string, args ...interface{}) error
錯誤碼使用
錯誤碼相關方法概覽
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方法,用于創建一個自定義錯誤信息的error對象,并包含堆棧信息,并增加錯誤碼對象的輸入。
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方法,用于包裹其他錯誤error對象,構造成多級的錯誤信息,包含堆棧信息,并增加錯誤碼參數的輸入。
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,用于創建一個自定義錯誤信息的error對象,并且忽略部分堆棧信息(按照當前調用方法位置往上忽略),并增加錯誤參數輸入。
func NewCodeSkip(code, skip int, text string) error func NewCodeSkipf(code, skip int, format string, args ...interface{}) error
獲取error中的錯誤碼接口
func Code(err error) gcode.Code
當給定的error參數不帶有錯誤碼信息時,該方法返回預定義的錯誤碼gcode.CodeNil
總結
通過這篇文章我們了解到使用GoFrame,如何自定義錯誤對象、如何忽略部分堆棧信息、如何自定義錯誤碼的返回、如何獲取error對象中的錯誤碼。
原文鏈接:https://juejin.cn/post/7112428421392629773
相關推薦
- 2022-07-28 C++超詳細講解函數參數的默認值_C 語言
- 2022-05-27 C++?算法精講之貪心算法_C 語言
- 2023-04-02 攔截信號Golang應用優雅關閉的操作方法_Golang
- 2022-04-08 C語言互換最大值與最小值的位置_C 語言
- 2022-12-12 flutter自定義InheritedProvider實現狀態管理詳解_Android
- 2022-03-19 Linux系統下安裝Redis數據庫過程_Redis
- 2023-04-26 C語言二維數組指針的概念及使用_C 語言
- 2022-03-06 Android中SurfaceFlinger工作原理_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支