Мне нужно написать некоторую бизнес-логику в функции отсрочки. Поток управления в 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 должен знать, что он вызван паникой любым возможным способом