English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Panic ist ein Mechanismus, den wir verwenden, um Fehlerzustände zu behandeln. Eine Notlage kann verwendet werden, um die Ausführung einer Funktion abzubrechen. Wenn eine Funktion panic aufruft, wird ihre Ausführung gestoppt und der Kontrollfluss zu den entsprechenden verzögerten Funktionen weitergeleitet.
Der Aufrufer dieser Funktion wird ebenfalls beendet, und die verzögerten Funktionen des Aufrufers werden ausgeführt (wenn vorhanden). Dieser Prozess dauert bis zum Ende des Programms an. Melde jetzt den Fehlerzustand.
Diese Abbruchsequenz wird als panic bezeichnet und kann durch die eingebauten Funktionen recover gesteuert werden。
package main import "os" func main() { panic("Fehler-Situation") _, err := os.Open("/tmp/file) if err != nil { panic(err) } }
Ausgabe:
panic: Fehler-Situation goroutine 1 [laufend]: main.main() /Users/pro/GoglandProjects/Panic/Panic-Beispiel1.go:6 +0x39
package main import "fmt" func main() { fmt.Println("Aufruf von x aus main.") x() fmt.Println("Rückkehr von x.") } func x() { defer func() { if r := recover(); r != nil { fmt.Println("Wiederhergestellt in x", r) } }() fmt.Println("Ausführung von x...") fmt.Println("Aufruf von y.") y(0) fmt.Println("Normal zurückgegeben von y.") } func y(i int) { fmt.Println("Ausführung von y....") if i > 2 { fmt.Println("Panik!") panic(fmt.Sprintf("%v", i)) } defer fmt.Println("Verzögert in y", i) fmt.Println("Druck in y", i) y(i + 1) }
Ausgabe:
Aufruf von x aus main. Ausführung von x... Aufruf von y. Ausführung von y.... Druck in y 0 Ausführung von y.... Druck in y 1 Ausführung von y.... Druck in y 2 Ausführung von y.... Panik! Verzögert in y 2 Verzögert in y 1 Verzögert in y 0 Wiederhergestellt in x 3 Von x zurückgegeben.