English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang Grund教程

Golang Kontrollanweisungen

Golang Funktion und Methode

Golang Struktur

Golang Schnitt und Array

Golang Zeichenkette (String)

Golang Zeiger

Golang Schnittstelle

Golang Konkurrenz

Golang Ausnahme (Error)

Golang andere Artikel

Go-Panic

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。

Panic-Beispiel1:

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

Panic-Beispiel2

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.