go / intermediate
Snippet
Ressourcensicherheit mit Defer und Panic-Recovery
Die integrierte 'recover'-Funktion ermöglicht es einem Programm, die Kontrolle über eine abstürzende Goroutine zurückzugewinnen. Sie muss immer innerhalb einer 'defer'-Funktion aufgerufen werden, um die Panic abzufangen.
snippet.go
1
2
3
4
5
6
7
8
9
10
func protectedFunction() {defer func() {if r := recover(); r != nil {fmt.Println("Recovered from panic:", r)}}()panic("something went wrong")fmt.Println("This will never run")}
Erklärung
1
defer func() { ... }()
Definiert eine Funktion, die unmittelbar vor dem Ende der Funktion ausgeführt wird.
2
r := recover()
Prüft, ob gerade eine Panic vorliegt, und ruft deren Wert ab.
3
panic(...)
Löst einen Laufzeitfehler aus, der den normalen Ausführungsfluss stoppt.