Qu’est-ce que la gestion des erreurs ?
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 66 sur 78.
Un programme peut s’arrêter en cours d’exécution à cause d’une erreur. Ce code demande l’emplacement 5 d’un tableau qui ne contient que trois éléments :
var inventory := ["sword", "shield", "potion"]
var slot := 5
print(inventory[slot])
print("Done")Godot signale Out of bounds get index '5' et la fonction s’arrête à cette ligne, donc Done ne s’affiche jamais. Il s’agit d’une erreur d’exécution : le code est valide, mais une valeur obtenue pendant son exécution rend impossible l’exécution d’une ligne.
Les erreurs à l’exécution que tu rencontreras le plus souvent sont :
- diviser un nombre entier par zéro, comme dans
10 / countlorsquecountvaut0(la même chose s’applique à%) - lire une clé inexistante avec des crochets, comme dans
player["mana"] - un indice en dehors du tableau, comme
inventory[5]ci-dessus
Python et Java peuvent intercepter une erreur après qu’elle s’est produite, avec try et except ou catch. GDScript n’a pas d’exceptions ni de try. La gestion des erreurs en GDScript consiste à vérifier les valeurs avant la ligne qui pourrait échouer, et à décider quoi faire à la place :
if slot >= 0 and slot < inventory.size():
print(inventory[slot])
else:
print("Slot ", slot, " is empty")La vérification nécessite les deux parties. Un indice négatif comme -1 n’est pas une erreur : il lit à partir de la fin du tableau, ce qui ne correspond pas à la signification d’un numéro d’emplacement.
Lorsque l’erreur se produit à l’intérieur d’une fonction que vous avez appelée, cette fonction s’arrête et renvoie une valeur vide, telle que 0 ou null, et l’appelant continue avec cette valeur incorrecte. Certaines erreurs donnent une valeur incorrecte sans aucune erreur : int("abc") vaut 0.
Défi
FacileLe tableau inventory comporte quatre cases, numérotées à partir de 0. Le programme lit une ligne d’entrée : un numéro de case (un nombre entier, éventuellement négatif).
Si la case existe, affiche Slot , le numéro, : et l’élément. Pour l’entrée 2, la sortie est :
Slot 2: potionSinon, affiche Slot , le numéro et is empty. Pour l’entrée 7, la sortie est :
Slot 7 is emptyUn nombre négatif ne correspond jamais à une case : pour -1, affiche Slot -1 is empty. Le programme ne doit jamais s’arrêter avec une erreur.
Essayez vous-même
extends Node
func _ready():
var inventory := ["sword", "shield", "potion", "bow"]
var slot := int(OS.read_string_from_stdin())
# Affiche l'objet dans l'emplacement, ou indique que l'emplacement est vide
pass
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 et flux d’exécution
1Les chaînes de caractères en profondeur
Méthodes des chaînesRechercher dans les chaînesRemplacer et supprimer les espacesDécouper et joindreRécapitulatif - Vérifier un nom d’utilisateur4Dictionnaires, partie 2
Dictionnaires imbriquésTableaux de dictionnairesFusionner des dictionnairesCopier des dictionnairesRécapitulatif - Compteur de fréquence7Énumérations
Qu’est-ce qu’une énumération ?Définir une énumérationValeurs d’une énumérationÉnumérations avec matchRécapitulatif - Feu de circulation10Fonctions avancées
Renvoyer plusieurs valeursFonctions lambda, partie 1Fonctions lambda, partie 2Récapitulatif - Tri avec lambdaFonctions récursives, partie 1Fonctions récursives, partie 2Récapitulatif - Somme d’un tableau imbriqué13Système de gestion des stocks
Présentation du projetAjouter un article2Prise de décision avancée
Correspondance avec des variablesGardes de correspondanceMotifs de tableauMotifs de dictionnaireVérifications d’appartenanceRécapitulatif – Analyseur de commandes5Application de carnet d’adresses
Afficher le menuAjouter un contact8Gestionnaire des dossiers étudiants
Aperçu du projetAjouter un étudiant3Tableaux multidimensionnels
Bases des tableaux 2DAccéder aux éléments d’un tableau 2DBoucles imbriquées avec des tableaux 2DRécapitulatif - Tableaux 2DTableaux irréguliersMotifs courants des tableaux 2DRécapitulatif - Plateau de jeu6Les ensembles avec les dictionnaires
Qu’est-ce qu’un ensemble ?Un dictionnaire comme ensembleAjouter et supprimerUnion et intersectionDifférence d’ensemblesRécapitulatif – Supprimer les doublons9Agrégation avancée de données
Additionner des valeursTrouver le minimum et le maximumTri personnaliséRécapitulatif - Trieur de dictionnaires12Gestion de base des erreurs
Qu’est-ce que la gestion des erreurs ?Valider les entréesClauses de gardeRenvoyer des codes d’erreurRécapitulatif : division sécuriséeEntraînez-vous par vous-même : Compilateur GDScript en ligne