RX0061

Domaine: Exécution

Message d'erreur

match sur %s (%s) : aucun bras ne l'a admis et il n'y a pas de else

Dans le message, %s marque une valeur que le moteur remplit au moment où il lève l'erreur.

L'histoire

Votre match a reçu une valeur qu'aucun de ses bras n'a reconnue, et il n'avait pas de else pour la rattraper. Voyons le mécanisme. Un match, c'est un aiguilleur : il regarde une valeur et choisit le bras qui lui correspond. Mais que se passe-t-il si aucun bras ne convient ? L'aiguilleur n'a plus de chemin à suivre, et plus de valeur à remonter. C'est à l'auteur d'écrire le fourre-tout, avec else. Sans lui, deux options existent. Soit le moteur laisse tomber en silence et continue le programme. Mais alors, le reste s'exécute sur une hypothèse que vous n'avez jamais écrite, avec une valeur que personne n'a prévue. Soit il refuse, et c'est ce qu'il fait. Un exemple : un match sur une couleur qui prévoit rouge et bleu, mais la valeur reçue est vert. Pas de else, donc aucun chemin. Le message nomme le sujet tel que le tas le contient et tel que vous l'avez écrit. Pour corriger, ajoutez un else qui traite tous les cas restants, même si c'est pour signaler une erreur. Un programme qui prévoit tous ses cas est un programme qui ne surprend pas.

Texte issu du catalogue d'erreurs du moteur Rush.