Golang基础(四)-- 错误处理

golang的错误处理和传统的try、catch不太一样,在做项目的时候为了写错误信息真的是适应了好半天。

最主要的一个点就是,err.Error()方法只是返回,或者说让你编辑错误信息用的方法,他并不是一个传统意义上的Exception,你可以把他理解成一个可以在panic和recover里输出的字符串。

而panic才是抛出异常的语句,这个语句你在项目中要慎用。异常需要你自己手动抛出,还必须自己写处理方法,如果你在一个同步执行的方法里写了panic且并没有recover,那么恭喜你,挨顿打吧。

传统的情景:

try{
     下面我的代码可能会出错
}catch(一堆根本记不住的错误类型 ex){
     console.write(我刚才出错了+ex)
}finally{
     大家就当无事发生过
}

golang的情景:

func main(){
   defer func(){
    if err := recover(); err != nil {
        做事情要悠着点,你刚才是不是 + err.Error()
    }
   }()

   _,err:=随便写,出错算我输()
   if err!=nil{
       我可能出错了,我想打印一下错误信息
       fmt.println(我刚才+err.Error())
       但!
       如果我不写panic,recover是不会截获我的。
   }
   所以我还是会往下执行的

   ...

   _,err=一个会引发panic的方法()
  if err!=nil{
     你在程序内部已经引发panic了,你现在进不到这个判断当中,会直接被recover捕获
  }
}

func 随便写,出错算我输() (int,error){
    if  我心情不好{
    return 0,errors.New("这是我自己编辑的错误信息,我认为在某种条件下,我输入的参数或者我程序执行的步骤是错误的,所以我写一条error返回去")
   }
   我的流程
   return 1,nil
}

func 一个会引发panic的方法() (int,error){
    err:=errors.New("刚开始就panic")
    panic(err)
    return 0,err //unreachable code
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • error code(错误代码)=0是操作成功完成。error code(错误代码)=1是功能错误。error c...
    Heikki_阅读 8,755评论 1 9
  • 序言 错误和异常是两个不同的概念,非常容易混淆。很多程序员习惯将一切非正常情况都看做错误,而不区分错误和异常,即使...
    _张晓龙_阅读 79,225评论 16 137
  • Go 语言没有像Java那样的 try/catch 异常机制,它不能执行抛异常操作,而是使用了panic 和 re...
    副班长国伟阅读 6,353评论 0 1
  • 我们总喜欢贪小便宜,然后得到了又不珍惜,人们总喜欢说人是非,却总看不到自己的缺点。往往我们只看到价格,却总看不到价...
    颜丽娜阅读 1,837评论 0 2
  • 如果有一天,我带着我的梦想,走在我想走过的,有些参天大叔的柏油路上。 不带任何悲伤的,抱着心爱的书,仰望着笔直的大...
    武悠阅读 1,400评论 0 0

友情链接更多精彩内容