英文:
How do I check if an error is strconv.NumError using errors.Is
问题
我有这个错误
这个错误是ParseInt类型的。我该如何检查这个错误?我猜我可以使用errors.Is
,但不确定如何在这种情况下使用它。
英文:
I have this error
The error is of type ParseInt. How do I check for this error
I am assuming I would use errors.Is
but not sure how I would do it for this case
答案1
得分: 2
type NumError struct {
Func string // 失败的函数(ParseBool、ParseInt、ParseUint、ParseFloat、ParseComplex)
Num string // 输入
Err error // 转换失败的原因(例如 ErrRange、ErrSyntax 等)
}
> 错误类型是 ParseInt。
"ParseInt"
是“失败的函数”的名称,即返回错误的函数。实际的错误类型是 *strconv.NumError
。你可以这样检查错误类型和函数名称:
if e, ok := err.(*strconv.NumError); ok && e.Func == "ParseInt" {
// 做一些操作
}
英文:
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.)
}
> The error is of type ParseInt.
"ParseInt"
is the name of the "failing function", the one that returned the error. The actual error type is *strconv.NumError
. You can check for that and the func name like so:
if e, ok := err.(*strconv.NumError); ok && e.Func == "ParseInt" {
// do xyz
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论