• GO语言异常处理01---恐慌的报出与处理


    package main
    
    import (
    	"fmt"
    	"math"
    )
    
    /*自己报出恐慌的语法*/
    func main021() {
    	fmt.Println(123)
    	panic("恐慌的原因")
    	fmt.Println(456)
    }
    
    /*
    圆的面积公式
    如果用户输入一个负数半径,panic
    */
    func GetCircleArea(radius float64) float64 {
    	//如果用户输入一个负数半径,panic
    	if radius < 0{
    		// 本行代码会导致程序崩溃——提示代码调用者,半径不能为负数
    		panic("傻鸟半径不能为负数!")
    	}
    	return math.Pi * radius * radius
    }
    
    /*因panic而死(程序闪退)*/
    func main022() {
    	fmt.Println(GetCircleArea(5))
    	fmt.Println(GetCircleArea(-5))
    }
    
    func main() {
    	/*
    	不管函数是正常返回,还是异常返回
    	defer所引导的代码,都一定会得到执行
    	*/
    	defer func() {
    		// 如果程序曾经因panic而崩溃过,recover可以是程序“复活”,并返回panic的原因
    		err := recover()
    
    		// 如果err不为空,就说明确实曾经因panic而崩溃过
    		if err != nil{
    
    			//处理致死的原因
    			fmt.Println("致死的原因是",err)
    			fmt.Println("偷偷地将错误原因上传后台")
    		}else{
    			fmt.Println("正序正常结束")
    		}
    	}()
    
    	fmt.Println(GetCircleArea(5))
    
    	// 调用时使用负数半径,触发了panic,程序挂掉在当前行,当前函数会异常“返回”
    	fmt.Println(GetCircleArea(-5))
    
    	// 当前前面有代码panic时,本行以后的代码执行不到
    	fmt.Println("其它美好功能...")
    }
    

      

  • 相关阅读:
    Catch That Cow POJ 3278(BFS)
    python的各种推导式(列表推导式、字典推导式、集合推导式)
    贝叶斯神经网络
    浅谈贝叶斯
    置换检验
    Python的基本用法
    字符串和编码
    开启新篇章
    无偏博弈类问题
    PAT1103
  • 原文地址:https://www.cnblogs.com/yunweiqiang/p/12057374.html
Copyright © 2020-2023  润新知