Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Panic after defer

  • defer
package main

import "fmt"

func main() {
	doIt(false)
	fmt.Println()
	doIt(true)
}

func doIt(earlyStop bool) {
	fmt.Println("Start")
	defer fmt.Println("Deferred")
	if earlyStop {
		panic("This is bad")
	}

	fmt.Println("Finish")
}
Start
Finish
Deferred

Start
Deferred
panic: This is bad

goroutine 1 [running]:
main.doIt(0x4db401)
	/home/gabor/work/slides/golang/examples/panic-after-defer/panic_after_defer.go:15 +0x1a5
main.main()
	/home/gabor/work/slides/golang/examples/panic-after-defer/panic_after_defer.go:8 +0x5d
exit status 2