Krótki film z programowania w golang o tych trzech zagadnieniach. W sensie czy i kiedy w ogóle używamy panic(), do czego używamy defer i jak działa, no i oczywiście przykład użycia recover. Krótki film, bo i zagadnienie nie jest obszerne, ale postanowiłem wziąć je osobno na tapetę, gdyż w programowaniu w Go, te zagadnienia oczywiście są spotkane, niektóre nawet często (w kodzie).

Programowanie w Go - panic, defer, recover

 

Zobacz nagranie o tych zagadnieniach

 

Kod do przykładu z funkcją panic

package main

import (
	"io/ioutil"
	"os"
)

var user = os.Getenv("USERX")

func main() {
	if user == "" {
		panic("no value for $USERX")
	}

	_, err := ioutil.ReadFile("/etc/motd")
	if err != nil {
		
	}
}

 

Kod do przykładu z instrukcją defer

package main

import (
	"fmt"
)

func specFunc(m string) {
	if rec := recover(); rec != nil {
		fmt.Println("Recover: ", rec)
	}
	fmt.Println(m)
}

func main() {
	defer specFunc("tekst")
	// specFunc("tekst")
	panic("boom")
}