Go错误处理 11

本文简单介绍了Go语言中的错误处理机制,特别是defer、panic和recover的使用。在可能出现错误的场景下,通常使用defer + recover来捕获和处理panic。错误处理在Go中通过error接口进行,可以逐层返回并处理。panic用于引发异常,而recover则用于在defer语句中捕获并恢复异常。理解这些概念对于编写健壮的Go代码至关重要。
摘要由CSDN通过智能技术生成

简单介绍:Go错误处理的方式
这里记录的是我个人不太熟练的语法和知识
详细内容移步:李文周的博客(非常详细)(虽然没有直接说,其实就是defer、panic、recover)


首先声明:一直以来,我以为错误处理是很高大上的东西,没怎么碰过,直到…看了这两份文档

https://blog.csdn.net/m0_38004619/article/details/98968097
https://www.cnblogs.com/zhangboyu/p/7911190.html

简单描述:在一个场景中,如果可能出现错误,那么首先定义defer + recover语句,接着如果程序panic掉了,defer中的recover就会捕获panic,然后处理掉。
经典的除零错误

func ads() int {
	defer func() {
		panic := recover()
		if panic != nil {
			// 在这里可以进行数据发送,
			// 将错误信息发送给管理员,以便修改错误
			fmt.Println("panic=", panic)
		}
	}()
	num1 := 10
	num2 := 0
	end := num1 / num2
	return end
}

panic= runtime error: integer divide by zero

#error&panic区别
Golang中引入error接口类型作为错误处理的标准模式,如果函数要返回错误,则返回值类型列表中肯定包含error。error处理过程类似于C语言中的错误码,可逐层返回,直到被处理。

Golang中引入两个内置函数panic和recover来触发和终止异常处理流程,同时引入关键字defer来延迟执行defer后面的函数。
一直等到包含defer语句的函数执行完毕时,延迟函数(defer后的函数)才会被执行,而不管包含defer语句的函数是通过return的正常结束,还是由于panic导致的异常结束。你可以在一个函数中执行多条defer语句,它们的执行顺序与声明顺序相反。
当程序运行时,如果遇到引用空指针、下标越界或显式调用panic函数等情况,则先触发panic函数的执行,然后调用延迟函数。调用者继续传递panic,因此该过程一直在调用栈中重复发生:函数停止执行,调用延迟执行函数等。如果一路在延迟函数中没有recover函数的调用,则会到达该携程的起点,该携程结束,然后终止其他所有携程,包括主携程。

错误和异常从Golang机制上讲,就是error和panic的区别。很多其他语言也一样,比如C++/Java,没有error但有errno,没有panic但有throw。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值