Comprendre `panic`
Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 42 sur 68.
En Go, panic est une fonction intégrée utilisée pour des situations véritablement exceptionnelles où votre programme rencontre une erreur irrécupérable et doit s’arrêter immédiatement. Contrairement aux erreurs ordinaires que vous gérez avec élégance, panic est réservé aux défaillances catastrophiques qui indiquent que quelque chose ne va fondamentalement pas dans la logique ou l’environnement de votre programme.
Lorsque panic est appelé, il arrête immédiatement l’exécution normale de la fonction actuelle et commence à dérouler la pile d’appels. Cela le rend très différent de l’approche Go habituelle consistant à renvoyer des erreurs qui peuvent être gérées par le code appelant.
En Go idiomatique, panic est rarement utilisé. La communauté Go privilégie fortement la gestion explicite des erreurs par l’intermédiaire de valeurs de retour plutôt que la gestion des erreurs fondée sur panic. Vous pouvez rencontrer panic dans des situations telles que l’accès à un tableau en dehors de ses limites, le déréférencement d’un pointeur nil, ou lorsqu’une bibliothèque détecte un état impossible qui indique un bogue de programmation.
La plupart des programmes Go devraient gérer les erreurs correctement à l’aide de l’interface d’erreur standard que tu as étudiée. panic ne devrait être envisagé que lorsqu’il n’existe vraiment aucun moyen raisonnable pour ton programme de continuer à s’exécuter.
Essayez vous-même
Cette leçon ne comprend pas de défi de code.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Structures de contrôle avancées
Switch avec `fallthrough`Sortir de boucles imbriquéesContinuer une boucle spécifiqueL'instruction `goto`Récapitulatif - Contrôle de boucle avancé4Projet : Liste de tâches simple
Configuration du projetAjouter une tâche7Gestion des erreurs en profondeur
Types d'erreurs personnalisésEnvelopper des erreurs avec `%w`Désenvelopper avec `errors.Is`Désenvelopper avec `errors.As`Comprendre `panic`Utiliser `recover`Récapitulatif - Division sécurisée2Structures et Méthodes
Définir des méthodes sur des structuresReceveurs par valeurReceveurs par pointeurChoisir les receveursMéthodes vs FonctionsRécapitulatif - Comportement des structures5Les Maps en profondeur
Maps de StructsPointeurs comme valeurs de MapTester les Maps NilComparer des MapsRécapitulatif - Compteur de fréquence de mots3Interfaces (Les bases)
Qu'est-ce qu'une Interface ?Définir une InterfaceImplémenter une InterfaceUtiliser les types d'InterfaceInterface videAssertions de typeType SwitchRécapitulatif - Formes et comportementsEntraînez-vous par vous-même : Compilateur Go en ligne