只包含了一个方法,方法返回值是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}
ar return error
一、错误(error)在程序执行过程中出现的不正常情况称为错误Go语言中使用builtin包下error接口作为错误类型,官方源码定义如下只包含了一个方法,方法返回值是string,表(100)人阅读时间:2024-03-06 06:12:0195公益周是什么
2020年9月4日,支付宝蚂蚁庄园小课堂的问题是关于95公益周的,很多朋友估计都没怎么听说过95公益周是什么,今天的问题是“小鸡宝宝考考你,95公益周是什么?”下面就来为(90)人阅读时间:2024-03-06 06:12:0160版本战法刷图加点
伊斯塔战灵加点方案:职业:魔法师>战斗法师>贝亚娜斗神>伊斯塔战灵等级:85SP:全部10770已用10770剩余0TP:全部36已用36剩余0QP:全部3974已用0剩余3974后跳:Lv1受身蹲伏:Lv1(84)人阅读时间:2024-03-06 06:12:01ati radeon hd4200
在看过3dfx短短不到五年却充满起起伏伏的历史之后,接下来我们要回头看同一时间正在快速壮大势力的ATI与NVIDIA所推出的产品,2000年是一个在个人计算机世界里极为重(61)人阅读时间:2024-03-06 06:12:01