Aller au contenu principal

Référence des erreurs d’exécution courantes

Fragment de description de l’erreurCauseTraitement
attempt to perform arithmetic on aTentative d’effectuer une opération mathématique sur une valeur non numérique (+、-、*、/)Avant l’opération, vérifier que toutes les entrées sont des nombres
attempt to compareTentative de comparer des valeurs non valides (>、<、>=、<=)Avant la comparaison, vérifier que les deux entrées peuvent être comparées
attempt to concatenate aTentative de concaténer une valeur qui n’est pas une chaîne (..)Avant la concaténation, vérifier que les deux valeurs sont des chaînes
attempt to call aTentative d’appeler une variable qui n’est pas une fonctionAvant l’appel, vérifier qu’il s’agit bien d’une fonction
attempt to index aTentative d’indexer une variable qui n’est pas une table (opération d’indice)Avant de lire une valeur dans un tableau ou une table associative, vérifier qu’il s’agit bien d’une table
attempt to yield across a C-call boundaryTentative de céder l’exécution dans un bloc d’appel qui ne le permet pasLors de l’utilisation de require pour charger un module, vérifier qu’aucune fonction susceptible de céder (signalée par un point d’exclamation devant son nom dans le manuel) n’est appelée avant le retour du module chargé par require. Ne pas non plus tenter d’utiliser une fonction susceptible de céder dans une fonction avec rappel C (également signalée par un point d’exclamation dans le manuel).
invalid order function for sortingFonction de tri non valide, généralement parce que la logique de comparaison ne définit pas clairement la règle de triLors de l’appel de la fonction de tri, définir clairement la règle et ne pas permettre qu’une règle où a est supérieur à b et une règle où a est inférieur à b soient vraies simultanément
bad argument #1 to 'xxx' (number expected, got nil)Lors de l’appel de xxx, le paramètre #1 est incorrect : un nombre est attendu, mais nil a été fourniCorriger les paramètres en transmettant une valeur adaptée
bad argument #2 to 'xxx' (number has no integer representation)Lors de l’appel de xxx, le paramètre #2 ne peut pas être converti en entierCorriger les paramètres en transmettant une valeur adaptée
bad argument #3 to 'xxx'Lors de l’appel de xxx, le paramètre #3 est invalideCorriger les paramètres en transmettant une valeur adaptée
  • Solution de contournement lorsqu’une erreur attempt to yield across a C-call boundary est levée avec require
    • 1、Ajouter une ligne return function() avant le code du module chargé par require
    • 2、Ajouter une ligne end à la fin du code du module chargé par require
    • 3、Ajouter une paire de parenthèses après l’appel à require, par exemple remplacer require('A') par require('A')()