首页 > 其他 > 详细

Golang - 异常处理

时间:2019-06-03 22:31:05      阅读:133      评论:0      收藏:0      [点我收藏+]
 

Golang - 异常处理

1. 抛异常和处理异常

package main

import "fmt"

//系统抛异常
func test0111() {
   a := [5]int{0, 1, 2, 3, 4}
   a[1] = 123
   //a[10] =456
   index := 10
   //index out of range
   a[index] = 456
}

//自己抛
func test222() {
   getCircleArea(-5)
}

func getCircleArea(radius float32) (area float32) {
   if radius < 0 {
      //自己抛异常
      panic("您的智商已下线,半径不能为负数")
   }
   return 3.14 * radius * radius
}

//结合defer
func test0333() {
   //延迟执行匿名函数
   //(1)函数正常执行结束了
   //(2)报错中断执行
   defer func() {
      //recover():返回程序为什么挂了
      if err := recover(); err != nil {
         fmt.Println(err)
      }
   }()
   getCircleArea(-5)
   fmt.Println("这里有没有执行")
}

func test444() {
   test0333()
   fmt.Println("GAME OVER")
}

func main() {
   //test0111()
   //test222()
   //test0333()
   test444()
}

2. 返回异常

package main

import (
   "errors"
   "fmt"
)

func getCircleArea(radius float32) (ret float32, err error) {
   if radius < 0 {
      err = errors.New("沙雕,半径不能为负数")
      return
   }
   ret = 3.14 * radius * radius
   return
}

func main() {
   ret, err := getCircleArea(-5)
   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println("ret=", ret)
   }
}
 
 

Golang - 异常处理

原文:https://www.cnblogs.com/yanghongtao/p/10970390.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!