Skip to content

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
Clone this wiki locally