iferr!=ni
, 应该随处可见,尤其是业务代码开发中,是的,Go没有类似 trycatch
这样的语句,Go对错误的价值观是可编程,我们看下面的代码:result1,err := func1()
if err != nil{
return nil,,err
}
result2,err := func2()
if err != nil{
return nil,err
}
result3,err := func3()
if err != nil{
return nil,err
}
return result1+result2+result3,nil
try{
result1 = method1();
reuslt2 = method2();
result3 = method3();
return result1+result2+result3;
}cache(Exception e){
log.error(e);
return null;
}
thrownew
抛出一个异常,通过 trycache
捕获,而Go中通过 panic
抛出一个恐慌,通过 defer和recover
来处理,我们来看看代码,在分析func test() (err error){
defer func(){
if e:=recover(); e != nil{
err = e.(error)
}
}()
panic("发生恐慌了")
return err
}
public Result test(){
try{
throw new RuntimeException("发生异常了")
}cache(Exception e){
//处理错误
1 打印错误,忽略
2 throw e,继续抛出
//转化为code,message
3 new Result(code,e.message)
}
}
iferr!=nil
的这样的代码到处都是,不同的编程语言对异常错误体系设计不一样,也代表不同开发者的思想,没有对与错,个人认为都能解决特定的问题,同时也会带来一定的困扰,一定要理解这种异常错误体系设计在当前编程语言中的设计思想,才能更好的使用,写出更优雅的代码。Go认为: