Go程序例子(27):自定义错误
Go程序例子(27):自定义错误
通过在自定义类型上实现 Error() 方法,可以将自定义类型用作 error 类型。以下是一个基于上面示例的变体,使用自定义类型来明确表示参数错误(argument error)。代码语言:go复制package main
import (
"errors"
"fmt"
)
// 自定义错误类型通常以 “
Go程序例子(27):自定义错误
通过在自定义类型上实现 Error() 方法,可以将自定义类型用作 error 类型。以下是一个基于上面示例的变体,使用自定义类型来明确表示参数错误(argument error)。
代码语言:go复制package main
import (
"errors"
"fmt"
)
// 自定义错误类型通常以 “Error” 作为后缀。
type argError struct {
arg int
message string
}
// 添加 Error 方法使得 argError 实现了 error 接口。
func (e *argError) Error() string {
return fmt.Sprintf("%d - %s", e.arg, )
}
func f(arg int) (int, error) {
if arg == 42 {
// 返回我们自定义的错误。
return -1, &argError{arg, "can't work with it"}
}
return arg + , nil
}
func main() {
// errors.As 是 errors.Is 的高级版本。它检查给定的错误(或其链中的任何错误)是否匹配特定的错误类型,并将其转换为该类型的值,若匹配则返回 true。如果没有匹配,它会返回 false。
_, err := f(42)
var ae *argError
if errors.As(err, &ae) {
fmt.Println(ae.arg)
fmt.Println(a)
} else {
fmt.Println("err doesn't match argError")
}
}
运行结果:
代码语言:javascript代码运行次数:0运行复制$ go run custom-errors.go
42
can't work with it
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-27 23:30:10
下一篇:Go程序例子(26):异常
推荐阅读
留言与评论(共有 16 条评论) |
本站网友 广州海军医院 | 17分钟前 发表 |
e.arg | |
本站网友 德力西开关怎么样 | 5分钟前 发表 |
func (e *argError) Error() string { return fmt.Sprintf("%d - %s" | |
本站网友 新操作系统 | 30分钟前 发表 |
如果没有匹配 | |
本站网友 skyfall歌词 | 22分钟前 发表 |
= f(42) var ae *argError if errors.As(err | |
本站网友 曲美实木家具怎么样 | 10分钟前 发表 |
可以将自定义类型用作 error 类型 | |
本站网友 成都国奥村 | 4分钟前 发表 |
"can't work with it"} } return arg + | |
本站网友 小米主题商店 | 15分钟前 发表 |
并将其转换为该类型的值 | |
本站网友 老公性无能 | 26分钟前 发表 |
"can't work with it"} } return arg + | |
本站网友 茅理翔 | 25分钟前 发表 |
_ | |
本站网友 黑客动画吧 | 30分钟前 发表 |
e.arg | |
本站网友 倚林佳园别墅 | 26分钟前 发表 |
return -1 | |
本站网友 成都天鹅湖花园 | 14分钟前 发表 |
func (e *argError) Error() string { return fmt.Sprintf("%d - %s" | |
本站网友 哪些食物含锌高 | 2分钟前 发表 |
&ae) { fmt.Println(ae.arg) fmt.Println(a) } else { fmt.Println("err doesn't match argError") } }运行结果:代码语言:javascript代码运行次数:0运行复制$ go run custom-errors.go 42 can't work with it | |
本站网友 企石租房 | 10分钟前 发表 |
type argError struct { arg int message string } // 添加 Error 方法使得 argError 实现了 error 接口 | |
本站网友 上海写字楼租售 | 24分钟前 发表 |
return -1 |