我有一个错误值,将它打印到控制台上会显示Token is expired
我该如何将其与特定的错误值进行比较?我尝试过这样,但不起作用:
if err == errors.New("Token is expired") {
log.Printf("Unauthorised: %s\n", err)
}
我有一个错误值,将它打印到控制台上会显示Token is expired
我该如何将其与特定的错误值进行比较?我尝试过这样,但不起作用:
if err == errors.New("Token is expired") {
log.Printf("Unauthorised: %s\n", err)
}
errors.New
将其保存为变量,然后使用errors.Is
进行比较。例如:import (
"errors"
"fmt"
)
var errSomethingWrong = errors.New("something is wrong")
func main() {
var err error
err = errSomethingWrong
fmt.Println("is errSomethingWrong:", errors.Is(err, errSomethingWrong))
}
输出:
is errSomethingWrong: true
相同的函数甚至适用于包装后的错误!使用fmt.Errorf(" ... %w ... ", err)
以一种可以稍后再次进行比较的方式包装错误。即使您与之进行比较的错误是以这种方式进行了包装,errors.Is
也会返回true。示例:
import (
"errors"
"fmt"
)
var (
myWrappedError = errors.New("something went wrong")
myOtherWrappedError = errors.New("this and that")
)
func main() {
var err error
err = fmt.Errorf("%w: %w", myWrappedError, myOtherWrappedError)
fmt.Println("error:", err)
fmt.Println("is myWrappedError:", errors.Is(err, myWrappedError))
fmt.Println("is myOtherWrappedError:", errors.Is(err, myOtherWrappedError))
}
输出:
error: something went wrong: this and that
is myWrappedError: true
is myOtherWrappedError: true