Google Go: recover() example

Here’s an example of how to use recover() in Google Go.

package main

import "fmt"

func gandalf( doTalkTo bool ){
	defer catch()
		// Panic stops execution of the current function and stops unwinding the stack, calling an deferred functions along the way.
		panic("You shall not pass!")	
// catch() must be called as a deferred 
func catch(){
	// recover() regains control over the program execution when panic() is called.
	// recover() returns is the argument passed from panic()
	if r := recover(); r != nil {
		fmt.Println("Error:", r)
	} else {
		fmt.Println("No problems occurred")
func main() {
	//unwinds to the top of the stack and ends the program
	panic("Where am I going?");

Error: You shall not pass!
No problems occurred
panic: Where am I going?

goroutine 1 [running]:


More information here:
Effective Go - The Program Language

(Page view Count: 47)