胖熊NET,有趣实用的生活常识!

最新更新文章排行手机版

胖熊NET!

热门搜索:
当前位置: > 母婴

ar return error

时间:2024-03-06 06:12:01人气:100作者:用户投稿

一、错误(error)在程序执行过程中出现的不正常情况称为错误Go语言中使用builtin包下error接口作为错误类型,官方源码定义如下

只包含了一个方法,方法返回值是string,表示错误信息

typeerrorinterface{\nError()string\n}Go语言中错误都作为方法/函数的返回值,因为Go语言认为使用其它语言类似try...cache这方式会影响到顺序结构在Go语言标准库的errors包中,提供了error接口的实现结构体errorString,并重写了error接口的Error()方法,额外还提供了快速创建错误的函数

packageerrors\n\n//Newreturnsanerrorthatformatsasthegiventext.\n//EachcalltoNewreturnsadistincterrorvalueevenifthetextisidentical.\nfuncNew(textstring)error{\nreturn&errorString{text}\n}\n\n//errorStringisatrivialimplementationoferror.\ntypeerrorStringstruct{\nsstring\n}\n\nfunc(e*errorString)Error()string{\nreturne.s\n}

如果错误信息由很多变量(小块)组成,可以借助fmt.Error("verb",...)完成信息格式化,因为底层还是errors.New()

funcErrorf(formatstring,a...interface{})error{\np:=newPrinter()\np.wrapErrs=true\np.doPrintf(format,a)\ns:=string(p.buf)\nvarerrerror\nifp.wrappedErr==nil{\nerr=errors.New(s)\n}else{\nerr=&wrapError{s,p.wrappedErr}\n}\np.free()\nreturnerr\n}二、自定义错误

使用Go语言标准库创建错误,并返回

packagemain\n\nimport(\n"errors"\n"fmt"\n)\n\nfuncdemo(i,kint)(rint,eerror){\nifk==0{\ne=errors.New("除数不能为0")\nreturn\n}\nr=i/k\nreturn\n}\n\nfuncmain(){\nfmt.Println("Part01====================================")\nresult,error:=demo(6,2)//result(第1个返回值)为结果,error(第2个返回值)为判读\n//fmt.Println(result,error)//输出:3<nil>\n\niferror!=nil{\nfmt.Println("程序执行出错,错误信息",error)\nreturn\n}\nfmt.Println("执行成功,结果为:",result)\n\nfmt.Println("Part02====================================")\na,b:=demo(3,0)\nfmt.Println(a,b)//输出:0除数不能为0\n}}

packagemain\n\nimport(\n"fmt"\n)\n\nfuncdemo(i,kint)(rint,eerror){\nifk==0{\n//e=errors.New("除数不能为0")\ne=fmt.Errorf("%s%d%d","除数不能为0,两个参数分别是:",i,k)\nreturn\n}\nr=i/k\nreturn\n}\n\nfuncmain(){\nfmt.Println("Part01====================================")\nresult,error:=demo(6,2)//result(第1个返回值)为结果,error(第2个返回值)为判读\n//fmt.Println(result,error)//输出:3<nil>\niferror!=nil{\nfmt.Println("程序执行出错,错误信息",error)\nreturn\n}\nfmt.Println("执行成功,结果为:",result)//输出:执行成功,结果为:3\n}

标签:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至123@。cc举报,一经查实,本站将立刻删除。