Heim  >  Artikel  >  Backend-Entwicklung  >  Panik und Erholung bei der Golang-Ausnahmebehandlung

Panik und Erholung bei der Golang-Ausnahmebehandlung

WBOY
WBOYOriginal
2024-04-15 18:15:02377Durchsuche

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.

Panik und Erholung bei der Golang-Ausnahmebehandlung

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. panicrecover 关键字是异常处理的重要机制。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üsselwort panic 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: 🎜rrreee

Das 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn