Heim > Backend-Entwicklung > Golang > So behandeln Sie Ausnahmen in Golang

So behandeln Sie Ausnahmen in Golang

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2023-05-15 12:17:37
Original
996 Leute haben es durchsucht

Go-Sprache ist eine statisch typisierte Programmiersprache, die objektorientierte Programmierung unterstützt. Im Vergleich zu anderen Programmiersprachen sollte ihr genauer Name „Go“ und nicht „golang“ lauten. Die Go-Sprache wurde 2007 ins Leben gerufen und ist eine von Google entwickelte Open-Source-Sprache.

In der Go-Sprache werden Ausnahmen als „Panik“ bezeichnet und ähneln nicht den Ausnahme- und Abfangmechanismen in Java oder C#. Wenn eine Ausnahme auftritt, wird das Programm beendet und der entsprechende Fehlermeldungsstapel ausgegeben.

In Go wird im Allgemeinen keine Ausnahmebehandlung verwendet. Stattdessen werden Funktionen verwendet, um Fehlercodes zur Behandlung von Ausnahmen zurückzugeben. Dieser Ansatz wird Fehlerbehandlung genannt. Die Fehlerbehandlung ist ein sehr wichtiger Mechanismus für die Go-Sprache.

In der Go-Sprache kann die Funktion einen zusätzlichen Fehlertypwert zurückgeben, der den Ausführungsstatus der Funktion angibt. Der Wert dieses Fehlerwerts kann Null sein, was angibt, dass die Funktionsausführung erfolgreich war, andernfalls zeigt er an, dass die Ausführung fehlgeschlagen ist . Wenn der Fehlerrückgabewert einer Funktion behandelt wird, kann das Rückgabeergebnis auf Fehler überprüft und eine effiziente und detaillierte Fehlerberichterstattung bereitgestellt werden. Dieser Fehlerbehandlungsmechanismus macht die Go-Sprache ideal zum Schreiben von äußerst zuverlässigem Code.

Normalerweise verarbeiten wir Fehlerinformationen, indem wir einen Fehler in der Funktion zurückgeben. Der spezifische Ansatz besteht darin, dass wir, wenn ein Fehler gefunden wird, den Wert des Fehlers auf einen Wert ungleich Null setzen und die Kontextinformationen über den Fehler aufzeichnen. Andere Arten von Fehlerbedingungen können auch durch die Rückgabe eines Fehlers behandelt werden.

Zum Beispiel, wie unten gezeigt:

func foo() error {
    if _, err := os.Stat("my_file"); err != nil {
        if os.IsNotExist(err) {
            return fmt.Errorf("file does not exist")
        } else if os.IsPermission(err) {
            return fmt.Errorf("permission denied")
        } else {
            return err
        }
    }
    return nil
}
Nach dem Login kopieren

Im obigen Codebeispiel ruft die Funktion foo() zuerst die Methode os.Stat() auf, um zu prüfen, ob die Datei nicht vorhanden ist zurückgegeben werden, können wir durch Abfrage dieses Fehlerwerts die tatsächliche Fehlerursache ermitteln und entsprechende Fehlerinformationen zurückgeben. Diese Methode ist flexibler als das Auslösen einer Ausnahme, da sie es dem Aufrufer ermöglicht, auszuwählen, ob der Fehler behandelt werden soll, und außerdem die gleichzeitige Rückgabe mehrerer Fehlermeldungen ermöglicht.

Allerdings müssen nicht alle Fehler sofort behoben werden, insbesondere einige unkritische Fehler. In diesem Fall kann der Programmierer entscheiden, ob er diese Fehler ignorieren möchte. Durch die Verwendung von „_“ im Code kann der Fehlerrückgabewert ignoriert werden. Diese Methode ist nicht für alle Situationen geeignet, aber bei Fehlern, die sich nicht auf die Programmausführung auswirken und keine Protokollierung oder Rückmeldung von Informationen erfordern, kann die Verwendung von Unterstrichen Ihren Code prägnanter und leichter lesbar machen.

Sie können „Defer“ in der Go-Sprache verwenden, um Panikausnahmen abzufangen. Die Funktion der Verzögerung besteht darin, einige Vorgänge beim Beenden des Programms auszuführen. Diese Vorgänge werden unabhängig davon ausgeführt, ob das Programm normal oder abnormal beendet wird. Wenn die integrierte Panikfunktion in der Verzögerungsfunktion aufgerufen wird, wird das Programm abnormal beendet. Unter normalen Umständen ist es üblich, Verzögerungen und Wiederherstellungen zu verwenden, um Ausnahmen in Programmen abzufangen und zu behandeln. Die Wiederherstellungsfunktion wird in der Go-Sprache bereitgestellt, um Panikausnahmen zu erfassen und den Status des Programms wiederherzustellen, nachdem das Programm die Ausführung fortgesetzt hat.

Zum Beispiel, wie unten gezeigt:

func main() {
    defer func() {
        if r := recover(); r != nil {
            log.Printf("Recovering from panic: %v", r)
        }
    }()
    panic("this is a panic")
}
Nach dem Login kopieren

Im obigen Code wird die panic()-Methode in der main()-Funktion aufgerufen. Wenn das Programm eine Panic-Ausnahme ausführt, stoppt die panic()-Funktion das Programm und druckt Finden Sie heraus, was passiert ist. Die Verwendung der Panikfunktion in der Verzögerungsfunktion kann jedoch erneut eine Panik auslösen. Dieser Fehler wird jedoch von der Funktion „recover()“ in der Verzögerungsfunktion erfasst und relevante Wiederherstellungsinformationen werden ausgedruckt, sodass das Programm normal beendet werden kann.

Kurz gesagt, in der Go-Sprache werden Ausnahmebehandlungsmechanismen selten verwendet, es wird jedoch mehr Wert auf Fehlerbehandlungsmechanismen gelegt. Die Behandlung von Programmfehlern durch Funktionsrückgabewerte kann die Programmlogik klarer und lesbarer machen und bessere Fehlerbehandlungs- und Feedbackmechanismen bieten. Die Verwendung von „Defer“ und „Recover“ in einem Programm kann durch das Abfangen von Ausnahmen nicht nur verhindern, dass das Programm abnormal beendet wird, sondern bietet auch einen Wiederherstellungsmechanismus für den Programmstatus. Mit diesen Techniken können Sie Programmausnahmen in der Go-Sprache problemlos behandeln.

Das obige ist der detaillierte Inhalt vonSo behandeln Sie Ausnahmen in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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