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 }