我的情况相当复杂,但为了在干净、清晰的上下文中提问,我使用简单的for循环,从0开始到10。现在我想做的是当 i变成2
时,程序将视其为紧急情况。它会使用defer进入恢复状态,然后在恢复后继续循环。
所以期望的输出应该是这样的:
0
1
panic occured: got 2
3
4
.
.
.
.
.
10
我得到的实际输出结果
0
1
panic occured got: got 2
代码块:
package main
import "fmt"
func main() {
goFrom1To10()
}
func goFrom1To10() {
defer recovery()
for i := 0; i <= 10; i++ {
if i == 2 {
panic("got 2")
}
fmt.Println(i)
}
}
func recovery() {
if r := recover(); r != nil {
fmt.Println("panic occured: ", r)
}
}
在Go语言中,当出现恐慌的情况时,我们是否可以进行恢复并完成我们的循环?