Golang error 的突围
目录 error 的困局 尝试破局 Errors are just values handle not just check errors Only handle errors once 小结 胎死腹中的 try 提案 go 1.13 的改进 fmt.Errorf Unwrap Is As 总结 参考资料 写过 C 的同学知道,C 语言中常常返回整数错误码(errno)来表示函数处理出错,通常用 -1 来表示错误,用 0 表示正确。 而在 Go 中,我们使用 error 类型来表示错误,不过它不再是一个整数类型,是一个接口类型: type error interface { Error() string } 它表示那些能用一个字符串就能说清的错误。 我们最常用的就是 errors.New() 函数,非常简单: // src/errors/errors.go func New(text string) error { return &errorString{text} } type errorString struct { s string } func (e *errorString) Error() string { return e.s } 使用 New 函数创建出来的 error 类型实际上是 errors 包里未导出的 errorString 类型,它包含唯一的一个字段 s