首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Golang处理空指针异常

问Golang处理空指针异常
EN

Stack Overflow用户
提问于 2014-07-21 10:32:25
回答 2查看 9.7K关注 0票数 2

考虑以下代码:

代码语言:javascript
复制
list := strings.Split(somestring, "\n")

假设这返回一个包含三个元素的列表或切片。然后,如果您尝试访问切片范围之外的内容:

代码语言:javascript
复制
someFunction(list[3])

程序可能会因为空指针而崩溃。在Golang中有没有什么方法可以处理nil指针异常,这样程序就不会崩溃,而是可以适当地响应?

EN

回答 2

Stack Overflow用户

发布于 2014-07-21 11:13:58

你不能在Go中做到这一点,即使你能做到,也不应该这样做。

总是检查你的变量和切片,每当你试图在切片或数组上使用未经检查的索引时,上帝就会杀死一只小猫,我喜欢小猫,所以我个人认为它是我个人的。

解决这个问题很简单,example

代码语言:javascript
复制
func getItem(l []string, i int) (s string) {
    if i < len(l) {
        s = l[i]
    }
    return
}
func main() {
    sl := []string{"a", "b"}
    fmt.Println(getItem(sl, 1))
    fmt.Println(getItem(sl, 3))
}
票数 10
EN

Stack Overflow用户

发布于 2014-07-21 10:49:14

Go有panic recover语句,它的工作方式类似于java或c#中的异常

请参阅http://blog.golang.org/defer-panic-and-recover

访问空指针会导致死机,如果你不使用recover来捕捉它,应用程序就会崩溃。

但是go并不鼓励使用panic/recover来处理这些异常,你可能应该在使用指针之前检查它是否为空。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24856953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档