【问题标题】:How do I check to see if an error is of a specific type in Golang using errors.Is如何使用 errors.Is 检查 Golang 中的错误是否属于特定类型
【发布时间】:2022-11-18 03:19:12
【问题描述】:

我有这个错误

错误是 ParseInt 类型。我如何检查此错误 我假设我会使用 errors.Is 但不确定在这种情况下我会怎么做

【问题讨论】:

  • 看起来错误类型是*strconv.NumError,一旦你验证了,那么你可以检查Func
  • 不确定您使用的是 Go 1.13 还是旧版本,但这值得一读:go.dev/blog/go1.13-errors ... 它解释了 IsAs 的区别,您可以比较这些值

标签: go


【解决方案1】:

https://pkg.go.dev/strconv@go1.19.3#NumError

type NumError struct {
    Func string // the failing function (ParseBool, ParseInt, ParseUint, ParseFloat, ParseComplex)
    Num  string // the input
    Err  error  // the reason the conversion failed (e.g. ErrRange, ErrSyntax, etc.)
}

错误是 ParseInt 类型。

"ParseInt"“失败的功能”,返回错误的那个。实际的错误类型是*strconv.NumError。您可以像这样检查它和 func 名称:

if e, ok := err.(*strconv.NumError); ok && e.Func == "ParseInt" {
    // do xyz
}

【讨论】:

    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多