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("其它美好功能...")
}
GO语言异常处理01---恐慌的报出与处理的更多相关文章
- 第63课 C语言异常处理
1. 异常的概念 (1)程序在运行过程中可能产生异常 (2)异常(Exception)与Bug的区别 ①异常是程序运行时可预料的执行分支 ②Bug是程序是的错误,是不被预期的运行方式 2. 异常和Bu ...
- 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB
走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...
- go语言异常处理
go语言异常处理 error接口 go语言引入了一个关于错误错里的标准模式,即error接口,该接口的定义如下: type error interface{ Error() string } 对于要返 ...
- Go语言异常处理defer\panic\recover
Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱.因为开发者很容易滥用异常, ...
- 01 C语言程序设计--01 C语言基础--第3章 基本数据类型01
01.1.3.1序言 00:02:17 01.1.3.2 C语言中的基本元素和常量的概念 00:08:54 01.1.3.3示例--常量 00:12:08 01.1.3.4变量的概念和命名规则 00: ...
- c语言异常处理机制
异常处理机制:setjmp()函数与longjmp()函数 C标准库提供两个特殊的函数:setjmp() 及 longjmp(),这两个函数是结构化异常的基础,正是利用这两个函数的特性来实现异常. 所 ...
- Java入门 - 语言基础 - 01.Java简介
原文地址:http://www.work100.net/training/java-intro.html 更多教程:光束云 - 免费课程 Java简介 序号 文内章节 视频 1 概述 2 主要特性 3 ...
- C 语言学习的第 05 课:C 语言基础(01)
C语言程序中的绝大部分应该记录在以.c作为扩展名的文件里,这种文件叫做C语言 程序的源文件. C语言中还包括以.h作为扩展名的文件,这种文件叫做头文件. C语言中的四则运算: 加:+ 减:- 乘 ...
- C语言学习-01第一个C语言程序
一 C语言的历史 C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言. 尽管C语言提供 ...
随机推荐
- PAT甲级1100——1155题总结
- ASP去除所有html标签
ASP去除所有html标签 function nohtml(str) dim re Set re=new RegExp re.IgnoreCase =true re.Global=True re.Pa ...
- [CTF]跳舞的小人
[CTF]跳舞的小人 来自夏洛克福尔摩斯在<归来记>中侦探案件使用的一种加密方式. 对应的明文是 AT ELRIGES (住在埃尔里奇) COME ELSIE (来吧 埃尔茜) NEVER ...
- <JVM下篇:性能监控与调优篇>01-概述篇-02-JVM监控及诊断工具-命令行篇
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- 前端Excel表格导入导出,包括合并单元格,表格自定义样式等
表格数据导入 读取导入Excel表格数据这里采用的是 xlsx 插件 npm i xlsx 读取excel需要通过 XLSX.read(data, {type: type}) 方法来实现,返回一个叫W ...
- NumPy中文文档搬砖(划掉)学习笔记(1)
原文地址 前言 况下加速Python中的操作运行时.适用于快速数值运算的一个选项是NumPy,它当之无愧地将自己称为使用Python进行科学计算的基本软件包. 当然,很少有人将50微秒(百万分之五十秒 ...
- Redis数据结构—链表与字典
目录 Redis数据结构-链表与字典 链表 Redis链表节点的结构 Redis链表的表示 Redis链表用在哪 字典 Redis字典结构总览 Redis字典结构分解 哈希算法 解决键冲突 rehas ...
- pr恢复工作区
当工作区操作的位置很乱时 平时如果关闭的窗口,可以在窗口中查看 也可以选择新建工作区,保存成一个自己所需工作区
- 全套office版本安装教程及下载地址
1:office 2003 安装教程及下载地址 https://mp.weixin.qq.com/s/HHGFdiLgL-xhDAAlox2axw 2:office 2007 安装教程及下载地址 ht ...
- (9)MySQL进阶篇SQL优化(InnoDB锁-记录锁)
1.概述 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的.InnoDB这种行锁实现特点意味着:只有通过索引条件检索 ...