Heim >Backend-Entwicklung >Golang >Panik und Erholung bei der Golang-Ausnahmebehandlung
In Go werden Panic und Recover zur Ausnahmebehandlung verwendet. Panic wird zum Melden von Ausnahmen und Recover zum Wiederherstellen nach Ausnahmen verwendet. Panic stoppt die Programmausführung und löst einen Ausnahmewert vom Typ interface{} aus. Recover kann eine Ausnahme von einer verzögerten Funktion oder Goroutine abfangen und den Ausnahmewert des Typs interface{} zurückgeben, den es auslöst.
Panic und Recover in der Ausnahmebehandlung der Go-Sprache
In der Go-Sprache sind die Schlüsselwörter panic
und recover
wichtige Mechanismen für die Ausnahmebehandlung. panic
wird verwendet, um Ausnahmen zu melden, und recover
wird verwendet, um Ausnahmen wiederherzustellen. panic
和 recover
关键字是异常处理的重要机制。panic
用于报告异常,而 recover
用于从异常中恢复。
Panic
panic
关键字用于报告一个异常条件,它会立即停止程序执行,并打印堆栈信息。使用 panic
时,程序会抛出一个 interface{}
类型的异常值。例如:
package main func main() { panic("发生了异常") }
Recover
recover
关键字用于从 panic
中恢复。它可以从当前 goroutine 返回一个 interface{}
类型的异常值。recover 只能在延迟函数或 goroutine 中使用。例如:
package main import "fmt" func main() { defer func() { if r := recover(); r != nil { fmt.Println("捕获到异常:", r) } }() panic("发生了异常") }
实战案例
假设我们有一个函数 divide
,它计算两个数的商:
func divide(a, b int) float64 { if b == 0 { panic("除数不能为零") } return float64(a) / float64(b) }
为了处理 divide
函数中可能发生的异常,我们可以使用 recover
Panic
🎜🎜 Das Schlüsselwortpanic
wird verwendet, um eine Ausnahmebedingung zu melden, die die Programmausführung sofort stoppt und Stapelinformationen ausgibt. Bei Verwendung von panic
löst das Programm einen Ausnahmewert vom Typ interface{}
aus. Zum Beispiel: 🎜func main() { defer func() { if r := recover(); r != nil { fmt.Println("捕获到异常:", r) } }() fmt.Println(divide(10, 2)) fmt.Println(divide(10, 0)) }🎜🎜Recover🎜🎜🎜 Das Schlüsselwort
recover
wird verwendet, um sich von der panic
zu erholen. Es kann einen Ausnahmewert vom Typ interface{}
von der aktuellen Goroutine zurückgeben. „Recover“ kann nur innerhalb verzögerter Funktionen oder Goroutinen verwendet werden. Zum Beispiel: 🎜5 捕获到异常: 除数不能为零🎜🎜Praktischer Fall🎜🎜🎜Angenommen, wir haben eine Funktion
dividieren
, die den Quotienten zweier Zahlen berechnet: 🎜rrreee🎜Um zu bewältigen, was bei dividieren-Funktion Für Ausnahmen können wir <code>recover
verwenden. Schlüsselwort: 🎜rrreee🎜Ausgabe: 🎜rrreeeDas obige ist der detaillierte Inhalt vonPanik und Erholung bei der Golang-Ausnahmebehandlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!