加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang - 异常处理

发布时间:2020-12-16 09:28:51 所属栏目:大数据 来源:网络整理
导读:目录 Golang - 异常处理 1. 抛异常和处理异常 2. 返回异常 Golang - 异常处理 1. 抛异常和处理异常 package mainimport "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] = 4

目录

  • Golang - 异常处理
    • 1. 抛异常和处理异常
    • 2. 返回异常

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)
   }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读