golang panic code example

Example 1: the go blog defer panic recover

package main

import "fmt"

func main() {
    f()
    fmt.Println("Returned normally from f.")
}

func f() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered in f", r)
        }
    }()
    fmt.Println("Calling g.")
    g(0)
    fmt.Println("Returned normally from g.")
}

func g(i int) {
    if i > 3 {
        fmt.Println("Panicking!")
        panic(fmt.Sprintf("%v", i))
    }
    defer fmt.Println("Defer in g", i)
    fmt.Println("Printing in g", i)
    g(i + 1)
}

Example 2: golang panic

// example panic, defer and recover

package main

import "fmt"

func recoveryPanic() {
	if recoveryMessage := recover(); recoveryMessage != nil {
		fmt.Println(recoveryMessage)
	}
}

func main() {

	name := "jane doe"

	if name != "john doe" {
		defer recoveryPanic()
		panic("name is not john doe")
	} else {
		fmt.Println("nama saya adalah", name)
	}

}

Example 3: the go blog defer panic recover

Calling g.
Printing in g 0
Printing in g 1
Printing in g 2
Printing in g 3
Panicking!
Defer in g 3
Defer in g 2
Defer in g 1
Defer in g 0
Recovered in f 4
Returned normally from f.

Tags:

Misc Example