最近接触 golang ,对于 err 的设定运用不好,很多工具的函数返回值都是比如(string,error)这类的,或者直接将 error 和值封装成一个 struct 返回,这样导致代码出现了大量的
if err != nil{
//statement
}
一段代码,感觉一半都是 if err...关键你每调用一次都要 if 一下,没法统一 try catch 真的好忧伤...
1
nicevar 2017-04-01 18:12:44 +08:00
这个设计是有点问题,定义了变量就要用,你忽略吧程序就到这了,很烦
|
2
nicevar 2017-04-01 18:13:42 +08:00
用 go 时间不是太长,不知道作者是基于什么考虑的
|
3
carlonelong 2017-04-01 18:22:25 +08:00
非常烦
而且调试的时候,注释掉一行,就弹 xxx not used |
4
senghoo 2017-04-01 18:26:43 +08:00 3
|
5
mooncakejs 2017-04-01 18:32:16 +08:00 via iPhone
又是挑事的吧,最近 go 和 rust 打的有点狠啊
|
6
chenset 2017-04-01 18:34:58 +08:00
@carlonelong +1
|
7
zhs227 2017-04-01 18:38:24 +08:00
go 语言的洁癖真的很伤,注释掉一段代码,你可能需要删掉对应的包,删掉对应的未使用变量定义。
优点是容易发现,哦,原来这段代码不用了,删掉…… |
8
ovear 2017-04-01 18:42:45 +08:00 via Android
。。。
错误处理不是结合 panic 和 recover 以及 defer 么? |
9
Numbcoder 2017-04-01 18:44:33 +08:00
|
11
zyguan 2017-04-01 23:50:06 +08:00 via Android
|
12
aliipay 2017-04-02 00:39:29 +08:00
|
13
Unknwon 2017-04-07 06:01:53 +08:00
调试一时爽。。重构火葬场。。
|
14
u5f20u98de 2017-04-20 12:30:05 +08:00
一般 error 多了,我都这么偷懒处理,欢迎交流。
写一个专门处理简单 error 的工具函数,当然 panic 再 recover 传说会影响程序运行效率。 频繁出错的情况建议还是老老实实用 err 。 下面是个随手写的例子: //panic 非空错误 func throw(err error) { if err != nil { panic(nil) } } //然后在其他 func 里,定义好变量 error ,然后通过 recover 捕获 panic 的方法来减少代码量 func xxoo()(err error){ defer func(){ recover() }() var ( ret1, ret2, ret3 string ) ret1,err=ooxx("aaa.php") throw(err) ret2,err=ooxx("bbb.php") throw(err) ret3,err=ooxx("ccc.jsp") throw(err) fmt.Println(ret1,ret2,ret3) return } func ooxx(filename string)(string,error){ if strings.HasSuffix(filename,".jsp"){ return "",errors.New("bad file name:"+filename) } return filename,nil } |