Go+ recover
recover概述
panic用于抛出异常,而recover用于捕获异常,recover是Go+的一个内建函数,recover从字面理解意思是恢复,他可以让你的系统从宕机中恢复过来(捕获异常),虽然程序报错了,但是不会宕机,会进行异常捕获处理,且recover仅仅在只在defer延迟函数有有效。比如说我们的某个服务遇到了某种错误,如果不做任何处理的话,服务端宕机了,客户端会一直保持长连接等待,十分不友好,我们这个时候就需要将异常信息返回给客户端。
recover基本用法
基本语法
recover
函数如下:
func recover() interface{}
需要注意的是,只有在defer
延迟函数里面,才可以调用recover
,我们可以拿到panic
的错误信息,让程序恢复到正常的状态。使用err := recover()
可以拿到异常对象,进而可以发现错误。
func catchError() {//使用defer +recover 来捕获和异常处理defer func() {err := recover() //recover()是一个内置函数,可以用于捕获异常if err != nil { // 如果err异常对象不为空,说明程序报错了println "err=", err//这里可以执行异常信息捕获的进一步操作println "异常被我捕获了"}// 没有异常执行的代码}()num1 := 18num2 := 0res := num1 / num2println "res=", res
}//测试
catchError
panic和recover
- panic用于抛出异常,意味着如果单独使用panic而不适用cover的话,程序会宕机。
- panic和cover联合使用的话,程序不会宕机,在宕机前,执行defer后会执行对应的cover,然后继续执行下一步操作。
Go+ recover相关推荐
- Go 学习笔记(19)— 函数(05)[如何触发 panic、触发 panic 延迟执行、panic 和 recover 的关系]
1. 异常设计思想 Go 语言的错误处理思想及设计包含以下特征: 一个可能造成错误的函数,需要返回值中返回一个错误接口( error ),如果调用是成功的,错误接口将返回 nil ,否则返回错误. 在 ...
- recover 没有捕获异常_GO语言异常处理机制panic和recover分析
本文实例分析了GO语言异常处理机制panic和recover.分享给大家供大家参考.具体如下: Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错 ...
- linux ora27040,使用RMAN recover database时遇到ORA-01119 ORA-27040 错误的解决办法
问题描述: DATA COLLECTED =============== CUSTOMER STATEMENT ------------------ 不过在恢复数据的过程中,用8月1号的全备份,恢复到 ...
- undo表空间文件丢失恢复(4)--无备份无recover的情况下恢复
undo表空间的数据文件丢失,如果没有备份的情况下,而且丢失的undo文件可以置为offline状态后(注意是offline不是recover状态),则可以如下恢复,下边给出一个例子. undo表空间 ...
- Go 语言 defer recover panic 简单例子
为什么80%的码农都做不了架构师?>>> // Mydef project main.go package mainimport ("log" )func ...
- go的异常处理,defer,panic,recover
比较经典的一个例子,里面包含defer,panic,recover 例子代码: package main import "fmt" func main(){ defer func( ...
- Recover Binary Search Tree
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- go panic recover 异常处理
go panic recover 异常处理 参考文章: (1)go panic recover 异常处理 (2)https://www.cnblogs.com/zhishuai/p/8043064.h ...
- Golang中的panic和recover(捕获异常)
Golang中的panic和recover(捕获异常) 参考文章: (1)Golang中的panic和recover(捕获异常) (2)https://www.cnblogs.com/zhzhlong ...
- Go的异常处理 defer, panic, recover
Go的异常处理 defer, panic, recover 参考文章: (1)Go的异常处理 defer, panic, recover (2)https://www.cnblogs.com/ghj1 ...
最新文章
- 将图像转换为8位单通道_数字图像存储
- oracle函数 trunc(x[,y])
- python语言原理_梯度下降算法的原理用Python语言实现,易于理解,python,更
- 因为难看的签名尴尬?Python爬虫制作艺术签名软件!
- 文本标注工具——doccano
- Dimensional 将 290 亿美元的共同基金转换为 ETF
- ODI知识模块--IKM Oracle Incremental Update
- hdoj 1570 A C
- 用php写出一个网站的模板,25 个 PHP 的 Web 开发程序网站模板
- 人员能力模型及能力培养设计
- Starbound正式版的Mod制作(一)nbsp;…
- 【超超超easy】5分钟:自制酷炫猫咪词云图,会点鼠标即可。
- Linux后台开发工具箱
- win10计算机怎么改中文,windows10 中文,小编教你Win10怎么设置中文语言
- Rocket.Chat接收消息流程
- 高防CDN是如何防护网站,防止CC攻击的?
- Python伪开发者对于搜狐云景的测评
- 程序员客栈TOP收入的萌系开发者心得-雨晴
- B.FRIENDit壁虎忍者笔记本支架,铝合金电脑支架,便携折叠、可调节桌面电脑架
- Python3 Knn~鸢尾花分类
热门文章
- 高通沈劲:前沿科技四大领域的发展现状与趋势
- java 录音和播放_java 播放录音
- javplayer手机版怎么用_JavPlayerTrial
- curl执行post命令
- 以太坊:下一代智能合约和去中心化应用平台
- 西联汇款基金会在2020年为33个国家的20万民众提供就业与新冠疫情支持
- Dell SupportAssist软件功能介绍
- Facebook广告投放技巧及思路、如何最大化发挥广告效益!
- 计算机东西太多了怎么清理,电脑越来越慢,电脑c盘东西太多,该如何清理?...
- 阿里巴巴中国站获得1688商品分类 API