go语言之进阶篇recover的使用
1、recover的使用
示例:
package main
import "fmt"
func testa() {
	fmt.Println("aaaaaaaaaaaaaaaaa")
}
func testb(x int) {
	//设置recover,recover只能放在defer后面使用
	defer func() {
		//recover() //可以打印panic的错误信息
		//fmt.Println(recover())
		if err := recover(); err != nil { //产生了panic异常
			fmt.Println(err)
		}
	}() //别忘了(), 调用此匿名函数
	var a [10]int
	a[x] = 111 //当x为20时候,导致数组越界,产生一个panic,导致程序崩溃
}
func testc() {
	fmt.Println("cccccccccccccccccc")
}
func main() {
	testa()
	testb(20) //当值是1的时候,就不会越界,值是20的时候,就会越界报错。
	testc()
}
执行结果:
aaaaaaaaaaaaaaaaa runtime error: index out of range //值越界 cccccccccccccccccc
go语言之进阶篇recover的使用的更多相关文章
- go语言之进阶篇接口转换
		
1.go语音之进阶篇 示例: package main import "fmt" type Humaner interface { //子集 sayhi() } type Pers ...
 - go语言之进阶篇通过select实现斐波那契数列
		
一.select作用 Go里面提供了一个关键字select,通过select可以监听channel上的数据流动. select的用法与switch语言非常类似,由select开始一个新的选择块,每个选 ...
 - go语言之进阶篇创建goroutine协程
		
1.goroutine是什么 goroutine是Go并行设计的核心.goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现 ...
 - go语言之进阶篇并行和并发的区别与go语言并发优势
		
1.并行和并发的概念 并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行. 并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在 ...
 - go语言之进阶篇JSON处理
		
一.JSON处理 JSON (JavaScript Object Notation)是一种比XML更轻量级的数据交换格式,在易于人们阅读和编写的同时,也易于程序解析和生成.尽管JSON是JavaScr ...
 - go语言之进阶篇正则表达式
		
正则表达式是一种进行模式匹配和文本操纵的复杂而又强大的工具.虽然正则表达式比纯粹的文本匹配效率低,但是它却更灵活.按照它的语法规则,随需构造出的匹配模式就能够从原始文本中筛选出几乎任何你想要得到的字符 ...
 - go语言之进阶篇面向对象编程
		
1.面向对象编程 对于面向对象编程的支持Go 语言设计得非常简洁而优雅.因为, Go语言并没有沿袭传统面向对象编程中的诸多概念,比如继承(不支持继承,尽管匿名字段的内存布局和行为类似继承,但它并不是继 ...
 - Go语言之进阶篇操作redis
		
1.windows安装redis 软件包下载地址: https://github.com/MicrosoftArchive/redis/releases 1.1.安装--->下一步---> ...
 - Go语言之进阶篇mysql增 删 改 查
		
一.mysql操作基本语法 1.创建名称nulige的数据库 CREATE DATABASE nulige DEFAULT CHARSET utf8 COLLATE utf8_general_ci; ...
 
随机推荐
- python全栈开发之匿名函数和递归函数
			
python 匿名函数和递归函数 python全栈开发,匿名函数,递归函数 匿名函数 lambda函数也叫匿名函数,即函数没有具体的名称.是为了解决一些功能很简单需求而设计的一句话函数.如下: #这段 ...
 - Django的URL别名
			
项目的urls.py配置文件 from message.views import getform urlpatterns = [ url(r'^admin/', admin.s ...
 - UVA.1640.The Counting Problem / BZOJ.1833.[ZJOI2010]数字计数(数位DP)
			
题目链接 \(Description\) 求\([l,r]\)中\(0,1,\cdots,9\)每个数字出现的次数(十进制表示). \(Solution\) 对每位分别DP.注意考虑前导0: 在最后统 ...
 - springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解
			
@_@ 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) myba ...
 - Python生成requirements.txt包依赖管理文件
			
requirements.txt是Python的依赖管理软件,和Java的POM一样. requirements.txt会生成使用了pip安装后的依赖包,在正常环境下会生成这个目录下的包/usr/lo ...
 - EF+Sqlite 动态设置连接字符串
			
摘要 在做c/s项目的时候,如果使用ef+sqlite,我们不知道客户端会安装在哪里,需要动态的来设置db所在路径. 解决办法 /// <summary> /// 数据上下文 /// &l ...
 - 奇妙的 CSS shapes(CSS图形)  【css 图形,绘图,CSS 几何图形)】
			
http://www.cnblogs.com/coco1s/p/6992177.html <!DOCTYPE html> <html> <head> <met ...
 - android:activity活动的生命周期
			
掌握活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命 周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的 游刃有余.你的应用程序将会拥有 ...
 - SpringBoot集成JWT实现token验证
			
原文:https://www.jianshu.com/p/e88d3f8151db JWT官网: https://jwt.io/ JWT(Java版)的github地址:https://github. ...
 - uitextfield 设置为密码框显示
			
uitextfield 设置为密码框显示: 在xib中,将文本secure的复选框选中即可.