golang 之 panic
在go中,当程序出现异常时,会发生panic。当发生panic后,需要使用recover捕获,如果没有捕获,则程序退出。 package main import "fmt" import "runtime/debug" func fun ( ) { fmt . Println ( "fun begin" ) defer func ( ) { //捕获panic if err := recover ( ) ; err != nil { debug . PrintStack ( ) //获取堆栈信息的字符串 fmt . Println ( "xxx" , string ( debug . Stack ( ) ) ) } } ( ) var p * int //产生异常 * p = 0 fmt . Println ( "fun end" ) //这里不执行 for { } } func main ( ) { fmt . Println ( "main begin" ) fun ( ) //因为panic被recover捕获,所以下面继续执行 fmt . Println ( "main end" ) for { } } 输出结果: main begin fun begin goroutine 1 [running]: runtime/debug.Stack(0xc000088060,