func test_1(){
exit:=make(chan struct{}) go func() { defer close(exit) defer println("exit") func(){ defer func() { println("b:",recover()==nil,recover()) }() func (){ println("c") //runtime.Goexit() panic("panic done") println("c done") }() println("b done") }() println("a done") }() <-exit
}
调用panic后会结束后续的流程,defer可以继续执行,但是println("a done")还是输出了了结果,照理来说panic调用后这部分应该也不能输出的为啥能输出“a done”?
有只小跳蛙
相关分类