panic&recover
@
1. panic
概念
- 函数F中书写了
panic
函数,会终止其后要执行的代码- 该函数中的
defer
将逆序(从下向上)执行- 引用该函数(A函数)的函数(B函数)中,A函数后的代码将不会被执行,
defer
将逆序执行
语法
- 语法
func panic(v any)
- 语法示例
panic("程序挂了")
panic(errors.New("程序挂了"))
完整示例
- 代码
package main
import (
"fmt"
)
func main () {
fmt.Println("北伐曹魏")
panic("武侯挂了")
fmt.Println("姜维继续北伐")
}
- 结果
2. recover
概念
- 作用:控制一个协程的panic行为,并捕获panic信息。
- 使用:配合defer中使用
语法
func coverPanic()
完整示例
- 代码
package main
import (
"fmt"
)
func main () {
fmt.Println("北伐曹魏 ====> ")
receivePanic()
fmt.Println("姜维继续北伐 ====>")
}
func receivePanic(){
defer coverPanic()
panic("-- 武侯挂了 ---")
}
func coverPanic(){
message := recover()
fmt.Println(message)
}
- 结果
北伐曹魏 ====>
武侯挂了 -------
姜维继续北伐 ====>