Maison > développement back-end > Golang > le corps du texte

Comment attraper la panique au Go ?

Barbara Streisand
Libérer: 2024-11-12 17:47:02
original
719 Les gens l'ont consulté

How Can You Catch Panics in Go?

Attraper la panique dans Go

Lors de la gestion d'événements inattendus dans Go, la panique est un mécanisme courant pour indiquer une erreur critique. Cependant, il est parfois souhaitable de gérer ces paniques avec élégance et de poursuivre l'exécution.

Dans le code fourni :

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Open(os.Args[1])
    if err != nil {
        fmt.Println("Could not open file")
    }
    fmt.Printf("%s", file)
}
Copier après la connexion

Si aucun argument de fichier n'est fourni, le programme panique en raison d'un manque de -indice de plage. Dans de tels cas, nous pouvons utiliser la fonction recovery() pour attraper et gérer la panique.

Utiliser recovery() pour gérer les paniques

La fonction recovery() permet un programme pour reprendre le contrôle après une panique. Elle peut être utilisée au sein d'une fonction différée, qui sera exécutée même si une panique survient dans la fonction principale.

func main() {
    defer func() {
        if recovered := recover(); recovered != nil {
            // Handle the panic here
            fmt.Println("File not provided")
        }
    }()

    file, err := os.Open(os.Args[1])
    if err != nil {
        fmt.Println("Could not open file")
    }
    fmt.Printf("%s", file)
}
Copier après la connexion

Dans ce code modifié, la fonction recovery() est utilisée au sein d'une fonction différée. Si une panique se produit, recovery() renverra la valeur transmise à l'appel de panique. Dans ce cas, il renverra nil puisque nous n'avons spécifié aucune valeur de panique.

En vérifiant la valeur de retour de recovery(), nous pouvons gérer la panique de manière appropriée, comme l'impression d'un message d'erreur et la poursuite de l'exécution. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal