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

Recover (and re-panic)

  • recover
  • try
  • catch
package main

import (
	"fmt"
)

func main() {
	fmt.Println("Before")
	fmt.Println()

	div(4, 2)
	fmt.Println()
	div(4, 0)

	fmt.Println()
	fmt.Println("After")
}

func div(a, b int) {
	fmt.Println("Start")

	defer func() {
		if err := recover(); err != nil {
			fmt.Printf("Error: %v\n", err)
			//log.Print("Error: ", err)
			//panic(err)
		}
	}()
	res := a / b
	fmt.Println(res)

	fmt.Println("End")
}
Before

Start
2
End

Start
Error: runtime error: integer divide by zero

After