go/panic

作者: 一斗 | 来源:发表于2019-03-11 14:10 被阅读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

相关文章

网友评论

      本文标题:go/panic

      本文链接:https://www.haomeiwen.com/subject/uxtbpqtx.html