golang_异常处理: go中error接口的应用,panic错误和recover的处理

本文探讨了Go语言中的异常处理机制,包括error接口的使用,如fmt.Errorf和errors包,以及如何处理panic错误。当遇到数组越界或空指针等致命错误时,程序会触发panic。通过defer和recover可以捕获并恢复从panic状态。

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

异常处理

error接口

生成一个error接口

1.fmt.Errorf

2.errors包

import (
	"errors"
	"fmt"
)

func main() {
	err1 := fmt.Errorf("%s","this is normal err1")
	fmt.Println("err1 = ",err1)

	err2 := errors.New("this is normal err2")
	fmt.Println("err2 = ",err2)
}

error接口应用

func div(a, b int)(result int, err error){

	err = nil
	if b == 0 {
		err = errors.New("分母不能为0")
	}else {
		result = a / b
	}
	return
}

func main() {

	result, err := div(10,0)
	if err != nil{
		fmt.Println("err =",err)
	}else{
		fmt.Println("result =",result)
	}
}
panic

数组越界,空指针 会崩溃导致panic致命错误,之后的程序无法执行

recover

写在defer后面

//在可能报错的函数中
defer func(){
    //recover()  //1)如果发生错误,不会panic,恢复正常,但是不能显示错误信息
    //fmt.Println(recover())  //2)打印错误信息,但是不panic时,打印nil
    if err := recover(); err != nil{ //3)产生panic时进行打印
        fmt.Println(recover()) 
    }
}() //匿名函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值