GO 语言 错误处理

1、go错误处理机制,没有try,catch
   处理方式是:defer,panic,recover
   go抛出一个panic的异常,然后在defer中通过recover捕获这个异常
func test(){
   defer func(){
      err := recover()
      if err != nil {
         fmt.Println("错误是:",err)
      }
   }()
   a := 1
   b := 0
   c := a/b
   //c := 1/0 捕获不到
   fmt.Println(c) //error: .\main.go:10:10: division by zero
}
func main(){
   test()
   //捕捉到错误后,其他代码还能正常显示
   fmt.Println("成功捕捉到错误")
}
2、go中自定义错误,使用error.NNew 和 panic 内置函数
   1、error.New("错误说明"),会返回一个error类型的值,表示一个错误
   2、panic()内置函数,接受一个interface{}类型的值(也就是任何值了)
      作为参数,可以接受error类型的值,输出错误信息,退出程序
func test2(str string)(err error){
   if(str == "123"){
      return nil
   }else{
      //自定义错误,调用errors包中的New函数建立
      return errors.New("传入的字符串不对")
   }
}
func test02(){
   err := test2("qwe")
   //返回的错误不是nil,就用内置函数panic输出错误,然后终止程序,后面的代码不执行
   if err != nil{
      //字符串错误,就输出错误,终止程序
      panic(err)
   }
   fmt.Println("后面的代码")
}
func main(){
   test02()
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值