-
Notifications
You must be signed in to change notification settings - Fork 0
learning3
Doifo edited this page Jun 9, 2023
·
1 revision
触发异常除了一些语法错误,还可以主动调用panic方法,并通过recover捕获。注意recover方法只能在defer方法中使用
import "fmt"
func set_data(x int) {
defer func() {
// recover() 可以将捕获到的panic信息打印
err := recover()
if err != nil {
fmt.Println(err)
}
}()
// 故意制造数组越界,触发 panic
var arr [10]int
arr[x] = 88
}
func main() {
set_data(20)
// 如果能执行到这句,说明panic被捕获了
// 后续的程序能继续运行
fmt.Println("everything is ok")
}
// 输出
// runtime error: index out of range [20] with length 10
// everything is ok