Golang中的error类型

Golang中的error类型,第1张

概述原文:https://studygolang.com/articles/4389 error类型本身就是一个预定义好的接口,里面定义了一个method type error interface { Error() string } 生成一个新的error并返回 一般有以下几种处理方式: package mainimport ( "errors" "fmt")type Cu

原文:https://studygolang.com/articles/4389

error类型本身就是一个预定义好的接口,里面定义了一个method

type error interface { Error() string }

生成一个新的error并返回

一般有以下几种处理方式:

package mainimport (    "errors"    "fmt")type Customerror struct {    infoa string    infob string    Err   error}func (cerr Customerror) Error() string {    errorinfo := fmt.Sprintf("infoa : %s,infob : %s,original err info : %s ",cerr.infoa,cerr.infob,cerr.Err.Error())    return errorinfo}func main() {    //方法一:    //采用errors包的New方法 返回一个err的类型    var err error = errors.New("this is a new error")    //由于已经实现了error接口的方法 因此可以直接调用对应的方法    fmt.Println(err.Error())    //方法二:    //采用fmt.Errof 将string信息转化为error信息 并返回    err = fmt.Errorf("%s","the error test for fmt.Errorf")    fmt.Println(err.Error())    //方法三:    //采用自定义的方式实现一个error的 一个duck 类型    err = &Customerror{        infoa: "err info a",infob: "err info b",Err:   errors.New("test custom err"),}    fmt.Println(err.Error())}

/*output:
this is a new error
the error test for fmt.Errorf
infoa : err info a,infob : err info b,original err info : test custom err
*/
golang中的 error package 内容也比较简单,这个package中实现了error中所声明的method(Error)相当于是一个error接口的duck类型。

// Package errors implements functions to manipulate errors.package errors// New returns an error that formats as the given text.func New(text string) error {    return &errorString{text}}// errorString is a trivial implementation of error.type errorString struct {    s string}func (e *errorString) Error() string {    return e.s}

采用fmt.Errorf方法把string类型转化为error类型,在这个方法的内部,先调用fmt包中的Sprintf方法把格式化的输入转化为字符串,在使用 errors.New 方法返回error类型。

采用自定义的error类型可以先判断err的动态类型,再进行下一层的判断。
比如net.Error接口,是一个对原先error接口的再封装。在读取文件的时候判断读取器读取结束的时候的io.EOF。

//io.EOFvar EOF = errors.New("EOF")//net.Error type Error interface {    error    Timeout() bool   // Is the error a timeout?    Temporary() bool // Is the error temporary?}
总结

以上是内存溢出为你收集整理的Golang中的error类型全部内容,希望文章能够帮你解决Golang中的error类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1273190.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存