github.com/sandwich-go/boost@v1.3.29/xpanic/panic_when.go (about)

     1  package xpanic
     2  
     3  import "fmt"
     4  
     5  // WhenErrorAsFmtFirst err 不为 nil 则 wrap 并 panic,将 err 作为第一个 fmt 的参数
     6  // xpanic.WhenErrorAsFmtFirst(err, "got error: %w while reading file: %s", filePath)
     7  func WhenErrorAsFmtFirst(err error, fmtStr string, args ...interface{}) {
     8  	if err == nil {
     9  		return
    10  	}
    11  	var argList = make([]interface{}, 0, len(args)+1)
    12  	argList = append(argList, err)
    13  	argList = append(argList, args...)
    14  	panic(fmt.Errorf(fmtStr, argList...))
    15  }
    16  
    17  // WhenError err 不为 nil 则 panic
    18  func WhenError(err error) {
    19  	if err == nil {
    20  		return
    21  	}
    22  	panic(err)
    23  }
    24  
    25  // WhenTrue 当 condition 为 true 时 panic
    26  func WhenTrue(condition bool, fmtStr string, args ...interface{}) {
    27  	if !condition {
    28  		return
    29  	}
    30  	panic(fmt.Errorf(fmtStr, args...))
    31  }
    32  
    33  // WhenHereNotNil 提供运行到此处返回的error应为nil的语义,避免在框架层吃掉error
    34  // 功能逻辑等同WhenError,但是语义上调用者确定这里不会返回错误
    35  func WhenHereNotNil(err error) {
    36  	if err == nil {
    37  		return
    38  	}
    39  	panic(fmt.Errorf("err should be nil when here, got:%w", err))
    40  }