```go
package main
import (
"fmt"
)
func main() {
test()
}
func test() {
defer func() {
if err := recover(); err != nil {
fmt.Println("e1:",err)
}
}()
panic("no1")
defer func() {
if err := recover(); err != nil {
fmt.Println("e2:",err)
}
}()
panic("no2")
}
```
本以为会输出no1、no2,但只输出no1<br>
以为panic("no1")会被第1个recover捕获,然后继续执行panic("no2")<br>
为什么recover会导致退出当前函数?<br>
以上panic是手动panic的,go能否根据一段代码进行判断,然后自动panic?<br>
有疑问加站长微信联系(非本文作者)