我需要在defer函数中编写一些业务逻辑。defer中的控制流应该基于defer是在系统死机之后执行还是在函数成功执行之后执行。
package main
import "log"
func b() {
panic("panicked in b")
}
func a() {
b()
}
func main() {
defer func() {
// If panicked
log.Println("panicked")
// if called after function successfully executed
log.Println("Success")
/*
How to understand if defer is triggered by panic or after function returned successfully.
*/
}()
a()
log.Println("main code")
}
预期:Defer应该能够通过任何可能的方式知道它被panic调用
1条答案
按热度按时间9q78igpj1#
您可以使用
recover
来捕获panic: