go/panic

2019-03-11  本文已影响0人  一斗

索引越界引发panic

func getOver(s []int) {
    length := len(s)
    fmt.Println(s[length])
}

func main() {
    s := []int{1, 2, 3}
    getOver(s)
    fmt.Println("finish")
}

输出

panic: runtime error: index out of range

goroutine 1 [running]:
main.getOver(...)
        F:/GoProjs/kf/main.go:9
main.main()
        F:/GoProjs/kf/main.go:14 +0x12
exit status 2

使用recover

func getOver(s []int) {
    defer func() {
        if p := recover(); p != nil {
            fmt.Println("panic")
        }
    }()
    length := len(s)
    fmt.Println(s[length])
}

func main() {
    s := []int{1, 2, 3}
    getOver(s)
    fmt.Println("finish")
}

输出

panic
finish
上一篇 下一篇

猜你喜欢

热点阅读