可以用fmt.Errorf的占位符%w包裹(warp)嵌套错误。然后用errors.Unwrap去除包裹嵌套,取出原始的错误。
func main() {
//捕获一下原始错误
err := wrapError()
fmt.Println("最新的错误:", err)
fmt.Println("原始错误:", errors.Unwrap(err))
}
// wrap:包裹的意思
func wrapError() error {
err := GetError()
return fmt.Errorf("你出现错误了:%w", err)
}
func GetError() error {
return errors.New("破防到嗨")
}
展示结果