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

  1. panic用于抛出异常,意味着如果单独使用panic而不适用cover的话,程序会宕机。
  2. panic和cover联合使用的话,程序不会宕机,在宕机前,执行defer后会执行对应的cover,然后继续执行下一步操作。

Go+ recover相关推荐

  1. Go 学习笔记(19)— 函数(05)[如何触发 panic、触发 panic 延迟执行、panic 和 recover 的关系]

    1. 异常设计思想 Go 语言的错误处理思想及设计包含以下特征: 一个可能造成错误的函数,需要返回值中返回一个错误接口( error ),如果调用是成功的,错误接口将返回 nil ,否则返回错误. 在 ...

  2. recover 没有捕获异常_GO语言异常处理机制panic和recover分析

    本文实例分析了GO语言异常处理机制panic和recover.分享给大家供大家参考.具体如下: Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错 ...

  3. linux ora27040,使用RMAN recover database时遇到ORA-01119 ORA-27040 错误的解决办法

    问题描述: DATA COLLECTED =============== CUSTOMER STATEMENT ------------------ 不过在恢复数据的过程中,用8月1号的全备份,恢复到 ...

  4. undo表空间文件丢失恢复(4)--无备份无recover的情况下恢复

    undo表空间的数据文件丢失,如果没有备份的情况下,而且丢失的undo文件可以置为offline状态后(注意是offline不是recover状态),则可以如下恢复,下边给出一个例子. undo表空间 ...

  5. Go 语言 defer recover panic 简单例子

    为什么80%的码农都做不了架构师?>>>    // Mydef project main.go package mainimport ("log" )func ...

  6. go的异常处理,defer,panic,recover

    比较经典的一个例子,里面包含defer,panic,recover 例子代码: package main import "fmt" func main(){ defer func( ...

  7. Recover Binary Search Tree

    Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...

  8. go panic recover 异常处理

    go panic recover 异常处理 参考文章: (1)go panic recover 异常处理 (2)https://www.cnblogs.com/zhishuai/p/8043064.h ...

  9. Golang中的panic和recover(捕获异常)

    Golang中的panic和recover(捕获异常) 参考文章: (1)Golang中的panic和recover(捕获异常) (2)https://www.cnblogs.com/zhzhlong ...

  10. Go的异常处理 defer, panic, recover

    Go的异常处理 defer, panic, recover 参考文章: (1)Go的异常处理 defer, panic, recover (2)https://www.cnblogs.com/ghj1 ...

最新文章

  1. 将图像转换为8位单通道_数字图像存储
  2. oracle函数 trunc(x[,y])
  3. python语言原理_梯度下降算法的原理用Python语言实现,易于理解,python,更
  4. 因为难看的签名尴尬?Python爬虫制作艺术签名软件!
  5. 文本标注工具——doccano
  6. Dimensional 将 290 亿美元的共同基金转换为 ETF
  7. ODI知识模块--IKM Oracle Incremental Update
  8. hdoj 1570 A C
  9. 用php写出一个网站的模板,25 个 PHP 的 Web 开发程序网站模板
  10. 人员能力模型及能力培养设计
  11. Starbound正式版的Mod制作(一)nbsp;…
  12. 【超超超easy】5分钟:自制酷炫猫咪词云图,会点鼠标即可。
  13. Linux后台开发工具箱
  14. win10计算机怎么改中文,windows10 中文,小编教你Win10怎么设置中文语言
  15. Rocket.Chat接收消息流程
  16. 高防CDN是如何防护网站,防止CC攻击的?
  17. Python伪开发者对于搜狐云景的测评
  18. 程序员客栈TOP收入的萌系开发者心得-雨晴
  19. B.FRIENDit壁虎忍者笔记本支架,铝合金电脑支架,便携折叠、可调节桌面电脑架
  20. Python3 Knn~鸢尾花分类

热门文章

  1. 高通沈劲:前沿科技四大领域的发展现状与趋势
  2. java 录音和播放_java 播放录音
  3. javplayer手机版怎么用_JavPlayerTrial
  4. curl执行post命令
  5. 以太坊:下一代智能合约和去中心化应用平台
  6. 西联汇款基金会在2020年为33个国家的20万民众提供就业与新冠疫情支持
  7. Dell SupportAssist软件功能介绍
  8. Facebook广告投放技巧及思路、如何最大化发挥广告效益!
  9. 计算机东西太多了怎么清理,电脑越来越慢,电脑c盘东西太多,该如何清理?...
  10. 阿里巴巴中国站获得1688商品分类 API