Heim > Backend-Entwicklung > Golang > Golang wird aufgrund einer Ausnahme nicht beendet

Golang wird aufgrund einer Ausnahme nicht beendet

PHPz
Freigeben: 2023-05-10 11:14:36
Original
833 Leute haben es durchsucht

Mit der Popularität von Golang beginnen immer mehr Entwickler, Golang zur Entwicklung von Anwendungen zu verwenden. Obwohl Golang über eine prägnante und leicht lesbare Syntax verfügt, die der C-Sprache ähnelt, ist die Ausnahmebehandlung im Vergleich zu anderen Sprachen anspruchsvoller. In diesem Artikel wird erläutert, wie Sie die Ausnahme-Non-Exit-Methode in Golang implementieren.

Wenn Sie in Golang die standardmäßigen Panik- und Wiederherstellungsmechanismen zur Behandlung von Ausnahmen verwenden, wird das Programm direkt beendet. Das Folgende ist ein einfaches Beispiel:

func test() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered:", r)
        }
    }()
    fmt.Println("Start test")
    panic("Something wrong")
}

func main() {
    test()
    fmt.Println("End main")
}
Nach dem Login kopieren

Wenn die Testfunktion im obigen Code die Panic-Anweisung ausführt, wird das Programm direkt beendet, ohne „End main“ auszugeben. Daher müssen wir andere Methoden zur Ausnahmebehandlung finden, um zu verhindern, dass das Programm beendet wird, wenn eine Ausnahme auftritt.

Eine einfache Möglichkeit besteht darin, die Defer-Anweisung und die Wiederherstellungsfunktion zu verwenden, um Ausnahmen zu behandeln. Wir können den folgenden Codeblock verwenden, um Ausnahmen abzufangen:

func test() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered:", r)
        }
    }()
    fmt.Println("Start test")
    panic("Something wrong")
}

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered:", r)
        }
    }()
    test()
    fmt.Println("End main")
}
Nach dem Login kopieren

In diesem Fall wird die Wiederherstellungsfunktion ausgelöst, wenn die Testfunktion die Panic-Anweisung ausführt, und das Programm wird weiter ausgeführt, anstatt es zu beenden. Schließlich gibt die Hauptfunktion „End main“ aus.

Eine andere Möglichkeit, Ausnahmen zu behandeln, ist die Verwendung des Fehlerbehandlungsmechanismus von Golang. Alle Funktionen in Golang können ein Fehlerobjekt zurückgeben. Wenn also innerhalb einer Funktion eine Ausnahme auftritt, können wir das Fehlerobjekt direkt zurückgeben, anstatt die Ausführung des Programms mit der Panic-Anweisung zu beenden.

Das Folgende ist ein Beispiel für die Verwendung des Fehlerbehandlungsmechanismus zur Behandlung von Ausnahmen:

func test() error {
    fmt.Println("Start test")
    return errors.New("Something wrong")
}

func main() {
    if err := test(); err != nil {
        fmt.Println(err)
    }
    fmt.Println("End main")
}
Nach dem Login kopieren

In diesem Beispiel gibt die Testfunktion ein Fehlerobjekt zurück, das von der New-Funktion erstellt wurde. In der Hauptfunktion ermitteln wir, ob eine Ausnahme auftritt, indem wir prüfen, ob der Rückgabewert der Testfunktion Null ist. Tritt eine Ausnahme auf, gibt das Programm eine Fehlermeldung aus und setzt die Ausführung fort. Abschließend gibt die Hauptfunktion „End main“ aus.

Zusammenfassend kann die Ausnahmebehandlung von Golang durch die Wiederherstellungsfunktion und den Fehlerbehandlungsmechanismus implementiert werden. Wir können die geeignete Ausnahmebehandlungsmethode basierend auf den spezifischen Geschäftsanforderungen auswählen.

Das obige ist der detaillierte Inhalt vonGolang wird aufgrund einer Ausnahme nicht beendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage