Home > Article > Backend Development > How to handle multiple errors simultaneously in Golang?
The way to handle multiple errors at the same time in Go is to use errors.Is to check whether the error is the underlying error of another error. Use errors.As to cast errors to a specific type if possible. Use errors.MultiError to create an ErrorGroup object containing multiple errors. Iterate over the ErrorGroup, performing specific actions for each error type.
How to handle multiple errors simultaneously in Golang?
Handling multiple errors simultaneously in Golang is achieved by using the errors.Is
and errors.As
functions. errors.Is
checks whether an error is the underlying error of another error, while errors.As
casts one error to another type, returning true if the conversion is successful, otherwise false.
Usage:
#Determine whether it is an underlying error
var err error // 检查 err 是否为 os.ErrNotExist 的底层错误 if errors.Is(err, os.ErrNotExist) { // 处理 os.ErrNotExist 错误 }
Forcing to a specific type
if errors.As(err, &someError) { // err 可以转换为 someError 类型 }
Practical case:
Suppose there is a function that needs to call multiple external functions, Every function may return an error. To handle all of these errors at the same time, you can create a multiError
using errors.MultiError
in a function, then call the individual functions and add the returned errors to the multiError
.
import "golang.org/x/xerrors" func main() { // 创建 MultiError multiError := errors.MultiError(nil) // 调用外部函数并添加错误 err := f1() if err != nil { multiError = multiError.Append(err) } err = f2() if err != nil { multiError = multiError.Append(err) } // 处理 MultiError if multiError != nil { switch { case errors.Is(multiError, os.ErrNotExist): // 处理 os.ErrNotExist 错误 case errors.Is(multiError, someError): // 处理 someError 错误 default: // 处理其他错误 } } } func f1() error { return os.Open("no-such-file") } func f2() error { return someError{err: "some error"} } // 自定义错误类型 type someError struct { err string } func (e someError) Error() string { return e.err }
It is easy to handle multiple simultaneously in Golang by using errors.MultiError
and errors.Is
/errors.As
functions mistake.
The above is the detailed content of How to handle multiple errors simultaneously in Golang?. For more information, please follow other related articles on the PHP Chinese website!