Go语言自学系列 | golang标准库errors
2023-09-14 09:09:08 时间
视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客_自学go语言
errors包实现了操作错误的函数。语言使用error类型来返回函数执行过程中遇到的错误,如果返回的error值为nil,则表示未遇到错误,否则error会返回一个字符串,用于说明遇到了什么错误。
error结构
type error interface {
Error() string
}
你可以用任何类型去实现它(只要添加一个Error()方法即可),也就是说,error可以是任何类型,这意味着,函数返回的error值实际可以包含任意信息,不一定是字符串。
error不一定表示一个错误,它可以表示任何信息,比如io包中就用error类型的io.EOF表示数据读取结束,而不是遇到了什么错误。
errors包实现了一个最简单的error类型,只包含一个字符串,它可以记录大多数情况下遇到的错误信息。errors包的用法也很简单,只有一个New函数,用于生成一个最简单的error对象:
func New(text string) error
package main
import (
"errors"
"fmt"
)
func check(s string) (string, error) {
if s == "" {
err := errors.New("字符串不能为空")
return "", err
} else {
return s, nil
}
}
func main() {
s, err := check("hello")
if err != nil {
fmt.Printf("err: %v\n", err.Error())
} else {
fmt.Printf("s: %v\n", s)
}
}
运行结果
[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
s: hello
自定义错误
package main
import (
"fmt"
"time"
)
// MyError is an error implementation that include a time and message.
type MyError struct {
When time.Time
What string
}
func (e MyError) Error() string {
return fmt.Sprintf("%v: %v", e.When, e.What)
}
func oops() error {
return MyError{
time.Date(1989, 3, 15, 22, 30, 0, 0, time.UTC),
"the file system has gone away",
}
}
func main() {
if err := oops(); err != nil {
fmt.Println(err)
}
}
运行结果
[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
1989-03-15 22:30:00 +0000 UTC: the file system has gone away
相关文章
- Go切片与技巧(附图解)
- Go 编程 | 连载 35 - testing 标准库的其他功能
- 1.Go语言之标准库学习记录(1)
- Go-标准库-fmt(二)
- Go-标准库-os(二)
- Go-标准库-net(二)
- Go-标准库-encoding(三)
- Go-标准库-log(二)
- Go-标准库-testing(一)
- Go-标准库-text(三)
- Go-标准库-runtime(四)
- Go-包管理-go build(二)
- Go语言UDP网络程序设计
- Go语言连接Oracle数据库实战(go连接oracle)
- 程序Linux上运行Go语言程序的指南(linux运行go)
- 如何在Linux上安装Go语言?——简单易懂的指南(linux安装go语言)
- Go语言链接Oracle数据库的实践记录(go 链接oracle)
- 一步一步学习Go读取Oracle数据库(go读取oracle)
- Go语言搭建Oracle数据库快速连接方法(go语言连接oracle)
- ODBC数据驱动程序连接Oracle数据库Go语言之旅(go使用oracle)
- 程序Go语言调用Oracle数据库驱动程序指南(go oracle驱动)
- 语言Oracle中发挥神奇作用的Go语言(oracle中有go)
- Go语句让Oracle数据库管理更方便(oracle go语句)
- GO语言标准错误处理机制error用法实例