【发布时间】:2014-07-21 02:32:24
【问题描述】:
考虑以下代码:
list := strings.Split(somestring, "\n")
假设这会返回一个包含三个元素的列表或切片。然后,如果您尝试访问切片范围之外的内容:
someFunction(list[3])
程序可能会因为 nil 指针而崩溃。 Golang 中是否有某种方法可以处理 nil 指针异常,从而使程序不会崩溃并且可以适当地响应?
【问题讨论】:
-
您应该在访问索引之前检查切片
len(list)的长度,这将防止出现越界错误。我不会因为这样的事情而依赖恐慌/恢复(如建议的那样)。 -
@elithrar 访问列表[3] 不应引起零恐慌,它的索引超出范围
-
@elithrar 我有一个相当长的 if 语句列表,每个都期望 list[] 长度不同,所以我在想是否有一些通用的方法来处理异常,例如尝试 catch 或 try except 语句,那么我不需要在每个 if 语句中调用 len() 。虽然听起来 Golang 中没有真正的等价物。
-
当然,确保它永远不会发生 ;)