Go - Panic

Go - Panic 首页 / Golang入门教程 / Go - Panic

Panic是一种用于处理错误情况的机制。紧急情况可用于中止函数执行。当一个函数调用panic时,它的执行停止,并且控制流到相关的延迟函数。

此函数的调用方也将终止,并执行调用方的延迟函数(如果存在)。该过程一直持续到程序终止。

无涯教程网

此终止序列称为panicking,可以通过内置的功能restore控制。

链接:https://www.learnfk.comhttps://www.learnfk.com/go/go-panic.html

来源:LearnFk无涯教程网

Panic示例1:

package main

import "os"

func main() {
	panic("Error Situation")
	_, err := os.Open("/tmp/file")
	if err != nil {
		panic(err)
	}
}

输出:

panic: Error Situation

goroutine 1 [running]:
main.main()
/Users/pro/GoglandProjects/Panic/panic example1.go:6 +0x39

Panic示例2

package main

import "fmt"
func main() {
	fmt.Println("Calling x from main.")
	x()
	fmt.Println("Returned from x.")
}
func x() {
	defer func() {
		if r := recover(); r != nil {
			fmt.Println("Recovered in x", r)
		}
	}()
	fmt.Println("Executing x...")
	fmt.Println("Calling y.")
	y(0)
	fmt.Println("Returned normally from y.")
}

func y(i int) {
	fmt.Println("Executing y....")
	if i > 2 {
		fmt.Println("Panicking!")
		panic(fmt.Sprintf("%v" , i))
	}
	defer fmt.Println("Defer in y", i)
	fmt.Println("Printing in y", i)
	y(i + 1)
} 

输出:

Calling x from main.
Executing x...
Calling y.
Executing y....
Printing in y 0
Executing y....
Printing in y 1
Executing y....
Printing in y 2
Executing y....
Panicking!
Defer in y 2
Defer in y 1
Defer in y 0
Recovered in x 3
Returned from x.

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Android开发高手课 -〔张绍文〕

玩转webpack -〔程柳锋〕

Spring Boot与Kubernetes云原生微服务实践 -〔杨波〕

Netty源码剖析与实战 -〔傅健〕

跟着高手学复盘 -〔张鹏〕

如何成为学习高手 -〔高冷冷〕

超级访谈:对话玉伯 -〔玉伯〕

手把手带你搭建推荐系统 -〔黄鸿波〕

B端产品经理入门课 -〔董小圣〕

好记忆不如烂笔头。留下您的足迹吧 :)