go语言学习(四)——异常

本文介绍了Go语言中的异常处理机制,包括关键字defer、panic和recover的使用。通过示例代码展示了如何利用这些关键字来分离正常执行的代码与错误处理代码,从而提高程序的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

go语言中的异常处理的关键字为defer,panic和recover,类比于其他语言的try,catch和finally,但go语言中的使用方法有些不同

下面是我的练习代码:

// GoStudy0215 project main.go
/*
go语言学习——异常
*/
package main

import (
	"fmt"
)

func main() {
	defer func() { //defer执行后,结束该函数的时候会调用
		if r := recover(); r != nil { //捕获错误信息,以进行相应的错误处理
			fmt.Println(r) //错误处理
		}
	}() //这里加括号表示调用这个函数

	defer func() { //defer是一个栈,后定义的defer会先执行
		fmt.Println("func end !!!")
	}()

	testFunc1() //这里调用panic之后,后面的不会执行,开始执行终止程序
	testFunc2()

	defer func() { //这个defer没有执行到,所以main函数结束的时候,并不会调用这个defer
		fmt.Println("no print")
	}()
}

func testFunc1() {
	fmt.Println("test func start")

	//由于某种原因,出现了错误
	//比如,游戏中的人物因为这个函数移动到了场景外
	//执行下面的语句,终止这个函数,层层往上终止,直至终止这个线程
	panic("404")

	fmt.Println("test func end")
}

func testFunc2() {
	panic(555)
}

通过我上面的代码能够看出来,相比于try,catch,finally好的地方在于,我们可以把应该正常执行的代码,和错误处理的代码完全分离,而不用向原来那样将正常的代码,错误处理的代码写在一起,使代码层次混乱

 

以上,异常结束

转载于:https://www.cnblogs.com/singledigit/p/6381742.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值