专注golang,python语言,云原生,人工智能领域得博主
过去经历的意义在于引导你,而非定义你,
只要我们足够努力,任何人都有无限潜力

  • panic 抛出异常函数
  • recover 捕获异常函数

1:在一个主协成内捕获异常

package main

import (
	"fmt"
)

func main(){

	defer func(){
		err := recover()
		if err != nil{
			fmt.println("捕获到异常")
		}
	}()

	panic("异常出现") //抛出异常,代表错误代码

}

运行结果

2:假设子协成内部错误,看看主协成能不能捕获到

package main

import (
	"fmt"
)

func calculate(){
    
	panic("异常出现")  // 同样代表错误代码
}



func main(){

	defer func(){
		err := recover()
		if err != nil{
			fmt.println("捕获到异常")
		}
	}()

	go calculate()
	
	time.sleep(time.second*3)  //防止主协成过早退出,导致子协成没执行

}

执行结果,主协成不能捕获到子协成的错误

3:假设子协成错误需要自己捕获

package main

import (
	"fmt"
	"time"
)

func calculate(){

	defer func(){
		err := recover()
		if err != nil{
			fmt.println("协成内部捕获异常")
		}
	}()

	panic("异常出现")
}



func main(){

	go calculate()

	time.sleep(time.second*3)

}

执行结果,成功捕获异常

到此这篇关于小学生也能看懂的golang异常处理recover panic的文章就介绍到这了,更多相关golang 异常处理 内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!