Golang中的错误和恐慌 (Go中的错误和崩溃)
编程的艺术
在业务逻辑中经常会看到有许多错误块的情况,例如按顺序调用以下函数。
func first() error {return nil}
func second() error {return nil}
func third() error {return nil}
func fourth() error {return nil}
func fifth() error {return nil}
怎么判断错误?
什么?我感到晕眩了。。。
func Do() error {
var err error
if err = first(); err == nil {
if err = second(); err == nil {
if err = third(); err == nil {
if err = fourth(); err == nil {
if err = fifth(); err == nil {
return nil
}
}
}
}
}
return err
}
实际工作中,更多的是扁平化的公司结构。
func Do() error {
var err error
if err = first(); err != nil {
return err
}
if err = second(); err != nil {
return err
}
if err = third(); err != nil {
return err
}
if err = fourth(); err != nil {
return err
}
if err = fifth(); err != nil {
return err
}
return nil
}
快使用panic!
func Do2() (err error) {
defer func(){
if r:= recover() ; r!= nil{
err = fmt.Errorf("Error: %+v", r)
}
}()
first2()
second2()
third2()
fourth2()
fifth2()
return
}