Skip to content

Instantly share code, notes, and snippets.

@serverhorror
Created April 13, 2017 16:37
Show Gist options
  • Save serverhorror/09f30f152188a6910e012d5dcc20cdf9 to your computer and use it in GitHub Desktop.
Save serverhorror/09f30f152188a6910e012d5dcc20cdf9 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"log"
"sync"
)
var (
wg sync.WaitGroup
)
func main() {
defer func() {
log.Print("main(): Running in defer")
if r := recover(); r != nil {
log.Printf("main() recovered: %#q (%T)", r, r)
if err, ok := r.(error); ok {
log.Printf("main() recovered an error: %#q (%T)", err, err)
// panic(fmt.Errorf("main(): %#q", err))
}
}
log.Printf("main(): defer after recover()")
}()
panicking()
}
func panicking() {
defer func() {
log.Print("panicking(): Running in defer")
if r := recover(); r != nil {
log.Printf("panicking() recovered: %#q (%T)", r, r)
if err, ok := r.(error); ok {
log.Printf("panicking() recovered an error: %#q (%T)", err, err)
panic(fmt.Errorf("panicking(): %#q", err))
}
}
log.Printf("panicking(): defer after recover()")
}()
panic(fmt.Errorf("This is the panic message!"))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment