zoukankan      html  css  js  c++  java
  • 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("其它美好功能...")
    }
    

      

  • 相关阅读:
    Python实现定时监测屏幕
    近期仿真遇到的问题汇总
    Python爬虫
    好用的浏览器插件
    视频剪辑软件
    MATLAB
    常用电脑辅助快捷键
    绘制PCB软件
    ANSYS19.0安装教程and遇到的各种问题以及目前知道的解决方式
    pyton脚本快速运行
  • 原文地址:https://www.cnblogs.com/yunweiqiang/p/12057374.html
Copyright © 2011-2022 走看看