Go学习笔记:panic()和recover()

anod · · 2100 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

如何理解:

1、调用panic函数相当于throw一个异常,逐层启动异常处理流程。在调用panic之前defer的操作会在调用panic后立即执行。

2、调用recover函数相当于catch了异常,会中止异常处理流程,并可以返回这个异常。

3、panic函数接受一个参数,任意类型,无返回值;

4、recover函数没有参数,返回值就是异常本身;

5、一般,recover函数放在defer后面的一个匿名函数中执行。个人认为还应该放在函数的首部;


一个例子


package main


import (
"fmt"
)


func work() {
Log(10)
panic("ERROR!")
Log(100)
}


func Log(args ...interface{}) {
fmt.Println(args...)
}
func main() {
defer func() {
if r := recover(); r != nil {
Log(r)
}
}()
work()
}



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:anod

查看原文:Go学习笔记:panic()和recover()

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2100 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传