golang默认的异常处理都是往外送error,于是导致代码里大量出现 形如
if err!=nil{
xxxxx
}
的代码。已经被无数人吐槽了。
我们在实际工作中,总结并规范了一下这部分的代码风格。这在进行中大型项目开发的时候一方面能保证代码的清爽,二方面又能维持golang这种error作为返回值往外送的好处。
大致使用了以下几个技术点:
1 defer和闭包
2 具名返回值
3 panic和recover
func doTest3()(res string,err error){ defer func() { err=recover().(error) fmt.Println(err) }() e:=doError() checkError(e) return "it is outputed from Do Test func",nil } func checkError(err error){ if err!= nil { panic(err) } } func doError()error{ return errors.New("I‘m Error") }