mirror of
https://github.com/Belphemur/CBZOptimizer.git
synced 2025-10-14 04:28:51 +02:00
26 lines
688 B
Go
26 lines
688 B
Go
package errs
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
// Capture runs errFunc and assigns the error, if any, to *errPtr. Preserves the
|
|
// original error by wrapping with errors.Join if the errFunc err is non-nil.
|
|
func Capture(errPtr *error, errFunc func() error, msg string) {
|
|
err := errFunc()
|
|
if err == nil {
|
|
return
|
|
}
|
|
*errPtr = errors.Join(*errPtr, fmt.Errorf("%s: %w", msg, err))
|
|
}
|
|
|
|
// CaptureGeneric runs errFunc with a generic type K and assigns the error, if any, to *errPtr.
|
|
func CaptureGeneric[K any](errPtr *error, errFunc func(value K) error, value K, msg string) {
|
|
err := errFunc(value)
|
|
if err == nil {
|
|
return
|
|
}
|
|
*errPtr = errors.Join(*errPtr, fmt.Errorf("%s: %w", msg, err))
|
|
}
|