Golang Panic后的返回值
目录
正解
在Go语言,执行过程出现panic后,返回值是默认值。
如 error 为 nil, int 为 0, string 为空串,等等。
返回值示例
下面模拟一个数组越界的panic,用recover恢复后,可以获得返回值。
package main
// ReadArray 读一个数组,返回数组元素(int)
func ReadArray (array []int, index int) int{
// 出现错误时,直接尝试恢复
defer func () {
recover()
} ()
return array[index]
}
// main 程序入口
func main () {
var TheReturn int
TheReturn = ReadArray([]int{1,2,3,4,5}, 99)
println(TheReturn)
}
运行结果
0
修改返回值
通过改变方法签名的初始变量,可以从panic恢复后,改变返回值。
package main
// ReadArray 读一个数组,返回数组元素(int)
func ReadArray (array []int, index int) (value int){
// 出现错误时,直接尝试恢复
defer func () {
recover()
} ()
// 如果出现Panic,则返回 -1
value = -1
value = array[index]
return value
}
// main 程序入口
func main () {
var TheReturn int
Array := []int{1,2,3,4,5}
TheReturn = ReadArray(Array, 99)
println(TheReturn)
}
运行结果
-1
参考
Return value of the function when panic is recovered in Go (Golang)