Go学习——defer、panic
defer:
延迟到ret之前,通常用于IO的关闭 or 错误处理。
在延迟出现的异常可以被后面的捕捉,但是只有最后一个。
defer可以多次,这样形成一个defer栈,后defer的语句在函数返回时将先被调用
func f() (result int) {deferfunc(){result++}()return 0}func test() error {f, err := os.Create("test.txt")if err != nil { return err }defer f.Close() // 注册调⽤用,⽽而不是注册函数。必须提供参数,哪怕为空。f.WriteString("Hello, World!")return nil
}
panic:
函数执行的时候panic了,函数不往下走了,运行时并不是立刻向上传递panic,而是到defer那,等defer的东西都跑完了,panic再向上传递。
func panic(v interface{})
func recover() interface{}defer recover() //无法捕捉
所以可以在defer中用recover进行抓捕。
而且recover必需在延迟调用内才行。
参考:
http://www.cnblogs.com/ghj1976/archive/2013/02/11/2910114.html
https://github.com/qyuhen/book
转载于:https://www.cnblogs.com/Przz/p/6816531.html
Go学习——defer、panic相关推荐
- Go的异常处理 defer, panic, recover
Go的异常处理 defer, panic, recover 参考文章: (1)Go的异常处理 defer, panic, recover (2)https://www.cnblogs.com/ghj1 ...
- go defer,panic,recover详解 go 的异常处理
golang中defer,panic,recover是很常用的三个特性,三者一起使用可以充当其他语言中try-catch-的角色,而defer本身又像其他语言的析构函数 defer defer后边会接 ...
- Go案例说明defer panic recover
defer推迟 recover恢复 panic恐慌 通过一个案例解释:发送邮件的 发送不成功要修改数据表的邮件发送状态值 发送邮件的内部sendEmail出现错误 要去修改数据表的状态值了 发送 ...
- Go-关键字defer、panic、recover详解
目录 defer 调用时机 多次调用时的执行顺序 传参问题 源代码 panic 执行defer 跨协程问题 源代码 recover 使用 源代码 总结 defer panic recover 全部源代 ...
- Go 学习笔记(19)— 函数(05)[如何触发 panic、触发 panic 延迟执行、panic 和 recover 的关系]
1. 异常设计思想 Go 语言的错误处理思想及设计包含以下特征: 一个可能造成错误的函数,需要返回值中返回一个错误接口( error ),如果调用是成功的,错误接口将返回 nil ,否则返回错误. 在 ...
- go 异常捕获处理 panic defer recover
简言 在其他语言里,宕机往往以异常的形式存在,底层抛出异常,上层逻辑通过 try/catch 机制捕获异常,没有被捕获的严重异常会导致宕机 go语言追求简洁,优雅,Go语言不支持传统的 try-cat ...
- golang go语言_在7小时内学习快速简单的Go编程语言(Golang)
golang go语言 The Go programming language (also called Golang) was developed by Google to improve prog ...
- golang return要返回的参数太多_Golang中的Defer必掌握的7知识点
在用Golang开发的时候,defer这个语法也是必备的知识,但是我们除了知道他是在一个函数退出之前执行,对于defer是否还有其他地方需要注意的呢.本文整理的defer的全场景使用情况,部分场景源自 ...
- Go实战--golang中defer的使用
原址 生命不止,继续 go go go !!! 学习golang这么久了,还没看到类似传统的 try-catch-finally 这种异常捕捉方式. 但是,Go中引入的Exception处理:def ...
最新文章
- 2021年大数据常用语言Scala(七):基础语法学习 条件表达式
- java查找和替换_java敏感字查找和替换
- java中的Cookie是什么_第74节:Java中的Cookie和Session
- python批量复制文件问题,python 批量复制不同目录下的文件
- java 位运算_java学习之运算符与表达式(四)
- 谁拿了最多奖学金(洛谷-P1051)
- asmcmd:Connected to an idle instance.
- Jquery的知识图谱
- 程序员为什么 365 天背电脑包?这答案我服!
- FragmentActivity+FragmentTabHost+Fragement替代TabActibvity+TabHost+Activity
- 10分钟搞定webpack打包
- Inceptor如何访问本地文件
- 华为手机热点无法连接_华为手机开热点,连不上怎么破
- CAD制图初学入门:CAD图案填充之图案加洞
- xposed框架_把安卓手机开发到极致的框架xposed
- BP神经网络综合评价法
- js前端缓存的几种方法
- 基于Salt Event系统构建Master端returner
- 配置与管理Ubuntu 21.10
- Git 术语及中英文对照
热门文章
- python中utf8占几个字节_为什么utf8占用3个字节
- 找不到jar包的解决方法
- python进制转换内置函数_python数学运算、逻辑运算和进制转化相关的 内置函数...
- 实现JavaSrcipt页面的跳转
- linux 安装node出现 libstdc++.so.6: wrong ELF class
- 设备自动获取ip DHCP模型 IP为169.254.4.193
- oracle refresh force,千万级表上的物化视图(force模式 ),手动刷新,为何速度奇慢?...
- 湖大和厦大计算机专硕6,【图片】一战厦大计算机上岸,经验帖。慢更【考研吧】_百度贴吧...
- hibernate mysql 模糊查询_服务器-hibernate操作mysql,模糊查询时中文查不到,数字和英文可以查到...
- oracle查询游标行数,如何查找Oracle PL/SQL游标中的记录数量?