首页 > 其他分享 >[Go] Defer, panic, recover

[Go] Defer, panic, recover

时间:2022-09-06 02:33:06浏览次数:78  
标签:Defer defer fmt func Go recover panic recoverFromPanic

package main

import (
	"fmt"
)

func recoverFromPanic() {
	fmt.Println("defer")
}

func doThings() {
	defer recoverFromPanic()
	for i := 0; i < 5; i++ {
		fmt.Println(i)
		if i == 2 {
			panic("NOT 2") // If there is a painc, it will find defer function run it
		}
	}
}
// Order:
// 0 1 2 defer panic: NOT 2
func main() {
	doThings()
}

Notice the order of flow:

Print out:

0

1

2

defer

Panic: NOT 2

Which means defer run before panic

That's the chance we can do recover:

func recoverFromPanic() {

	if r := recover(); r != nil {
		fmt.Println("catch panic", r)
	}
}
catch panic NOT 2

标签:Defer,defer,fmt,func,Go,recover,panic,recoverFromPanic
From: https://www.cnblogs.com/Answer1215/p/16660303.html

相关文章

  • [GO] Pass by reference
    funcchangeName(name*string){ *name=strings.ToUpper(*name)}//CoordinatestypeCoordinatesstruct{ X,Yfloat64}funcmain(){ name:="Elvis" ch......
  • [Go] Pointer
    varnamestring varnamePointer*string//Pointer name="Beyonce" namePointer=&name//AssignaPointer fmt.Println("Name:",name) fmt.Println("Nam......
  • django ORM常见查询关键字与外键字段数据操作
    今日内容表查询数据准备及测试环境搭建1.django自带一个sqllite3小型数据库 该数据库功能非常有限并且针对日期类型的数据兼容性很差2.django切换MySQL数据 针对dja......
  • django框架之字段类型及表查询
    ORM操作数据准备及测试环境搭建1.数据库切换:配置文件settings中配置mysql数据库DATABASES={'default':{'ENGINE':'django.db.backends.mysql',......
  • Django ORM 常用字段和表查询
    表查询数据准备及测试环境搭建sqllite3django自带sqllite3小型数据库该数据库功能非常有限,并且针对日期类型的数据兼容性很差django切换MySQL数据django1.x版本的......
  • django前后端不分离入门
    在django中创建html模板,关联数据,返回给浏览器修改settings.py文件将'DIRS':[]修改为'DIRS':[os.path.join(BASE_DIR,'templates')],项目目录下创建模板文件夹te......
  • Go 执行命令行并实时打印输出
    golang可以获取命令执行的输出结果,但要执行完才能够获取。如果执行的命令是ssh,我们要实时获取,并执行相应的操作呢?见:https://blog.csdn.net/universsky2015/article/detai......
  • 【2022-09-05】Django框架(五)
    Django框架(五)定义模型类fromdjango.dbimportmodels#Createyourmodelshere.classUser(models.Model):uid=models.AutoField(primary_key=True,ver......
  • 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目结构优化EP05
    前文再续,上一回我们完成了用户管理模块的CURD(增删改查)功能,功能层面,无甚大观,但有一个结构性的缺陷显而易见,那就是项目结构过度耦合,项目的耦合性(Coupling),也叫耦合度,进而......
  • 题解【CF1025D Recovering BST】
    题目传送门肉眼观察题。设\(f_{i,j,k}\)表示区间\([i,j]\)的根为\(k\)时能否还原。这样枚举一个根\(k\),分别枚举两个儿子在两个区间的位置转移就好了,由于两个儿子......