go - 如何检查函数返回的错误类型(strconv.Atoi)
问题描述
我有以下测试的基本代码strconv.Atoi()
:
package main
import (
"fmt"
"strconv"
)
func main() {
var a int
var b string
var err Error
b = "32"
a,err = strconv.Atoi(b)
fmt.Println(a)
fmt.Println(err)
}
我想处理是否存在错误strconv.Atoi()
,特别是如果错误是由于语法或范围,strconv.Atoi()
可以提供的条件。为此,我尝试了以下方法:
package main
import (
"os"
"fmt"
"strconv"
)
func main() {
var a int
var b string
var err error
b = "32"
a,err = strconv.Atoi(b)
if(err.Err == ErrSyntax) {
fmt.Println("ERROR")
os.Exit(1)
}
fmt.Println(a)
fmt.Println(err)
}
我得到了这个结果:
% go build test.go
# command-line-arguments
./test.go:19:8: err.Err undefined (type error has no field or method Err)
./test.go:19:16: undefined: ErrSyntax
我想了解如何处理这两个错误Atoi
可以返回(ErrSyntax
,ErrRange
)。
解决方案
您可以使用errors
包(使用 Go 1.13 中的错误):
if errors.Is(err, strconv.ErrSyntax) {
fmt.Println("syntax error")
os.Exit(1)
}
推荐阅读
- android - Cordova GoogleMaps 插件问题
- apache-spark - 将数据框保存到 .txt 或 .csv 文件
- html - 清除值时,反应选项卡组件内的 ContentEditable 组件不起作用
- sql - 长时间运行的 PostgreSQL 函数返回错误
- r - 根据数据框(R)的任何列中的值删除行
- javascript - 检查所有复选框
- json - 如何在 Delphi 中扩展 JSON $date,或者它是 System.JSON 中时区和 UTC 的错误?
- jquery - Jquery 网络摄像头停止/关闭
- java - 如何检查输入字符串是否是列表中算法的哈希:[“md5”,“sha1”,“sha256”]
- apache-kafka - kafka流在启动时消耗非常快并且突然变慢