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("其它美好功能...")
}

  

最新文章

  1. 疑惑的 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L
  2. WordPaster.exe安装教程
  3. 学写了一段LINQ
  4. Activity与Service通信(不同进程之间)
  5. locals()函数访问当前还在作用范围内的局部变量
  6. Tips for android
  7. Python天天美味(15) - Python正则表达式操作指南(re使用)(转)
  8. jQuery中的html,val,text区别
  9. JAVA判断32位还是64位,调用不同的DLL(转)
  10. Java面试题—中级(中)
  11. The 12th tip of DB Query Analyzer, powerful in text file process
  12. 第四次Scrum编码冲刺!!!!
  13. php开发之常用验证方法
  14. 阶段01Java基础day23多线程
  15. jdk 8 日期处理。
  16. Git入门看这一篇就够了! (转)
  17. pssac plot
  18. X86和X64环境下的基本类型所占用的字节大小
  19. fastx tookit 操作fasta/fastq 文件 (1)
  20. Ansible Jinja if 生成不同的MySQL文件

热门文章

  1. kubernetes集群证书更新
  2. android添加账户源码浅析
  3. 逆向 string.h 函数库 strlen、memchr、strcat 函数
  4. SQLServer的XP_CmdShell提权
  5. MinGW 可以编译驱动的
  6. web php wrong nginx config
  7. Windows进程间通讯(IPC)----信号量
  8. python爬虫——《瓜子网》的广州二手车市场信息
  9. NumPy之:ndarray多维数组操作
  10. IPC机制key值的各位组成