程式語言:Go
官方 GitHub
功能:處理 error
當錯誤最終由 main 函數處理時,錯誤信息應提供清晰的從原因到後果的因果鏈
就像美國宇航局事故調査時做的那樣:
- Package:
- github.com/pkg/errors
官方 GitHub
功能:處理 error
建議做法
使用 errors 添加額外的上下文信息到原始錯誤信息當錯誤最終由 main 函數處理時,錯誤信息應提供清晰的從原因到後果的因果鏈
就像美國宇航局事故調査時做的那樣:
genesis: crashed: no parachute: G-switch failed: bad relay orientation由於錯誤信息經常是以鏈式組合在一起的,所以錯誤信息中應避免大寫和換行符
- errors
- func Cause(err error) error
- 回傳最底層的 error,可用來判斷,如下兩種方式
switch err.(type) switch err
- func New(message string) error
func Errorf(format string, args ...interface{}) error - 新建 error,並記錄當前的 stack trace
- func WithMessage(err error, message string) error
func WithMessagef(err error, format string, args ...interface{}) error - 添加 新的訊息,但不添加 stack trace
- func WithStack(err error) error
- 添加 當前的 stack trace,但不添加訊息
- func Wrap(err error, message string) error
func Wrapf(err error, format string, args ...interface{}) error - 添加 新的訊息 與 當前的 stack trace
留言
張貼留言