您现在的位置是:首页 > 编程 > 

Go程序例子(27):自定义错误

2025-07-28 02:15:02
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组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1253588.html

相关标签:无
上传时间: 2025-07-27 23:30:10
留言与评论(共有 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