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