github.com/tencent/goom@v1.0.1/erro/traceable.go (about)

     1  // Package erro 收拢了所有的错误类型,错误溯源类型等
     2  // 1. 支持打印不同该类型的错误的详细提示, 方便确定问题的解决方法
     3  // 2. 异常可以溯源, 方便问题排查
     4  package erro
     5  
     6  // Traceable 带原因的异常类型
     7  // TODO later 可以使用go自带的 %w 功能替代
     8  type Traceable interface {
     9  	// Cause 获取错误的原因
    10  	Cause() error
    11  }
    12  
    13  // CauseOf 获取错误原因
    14  func CauseOf(err error) error {
    15  	if c, ok := err.(Traceable); ok {
    16  		return c.Cause()
    17  	}
    18  	return nil
    19  }