Le meilleur didacticiel Lua Gestion des erreurs en 2024, dans ce didacticiel, vous pouvez apprendre erreur de syntaxe,Erreur d'exécution,Gestion des erreurs,pcall et xpcall, debug,
la gestion des erreurs exécution du programme est nécessaire, dans nos opérations de fichiers, transfert de données et d'un service Web appel apparaîtra dans des erreurs inattendues. Si vous ne faites pas attention à traiter les messages d'erreur, selon les informations fuira, ne peut pas fonctionner et ainsi de suite.
Les langages de programmation, la gestion des erreurs est nécessaire. types d'erreurs sont:
Les erreurs de syntaxe sont généralement dues à des composantes du programme (tels que les opérateurs, expressions) causés par une mauvaise utilisation. Un exemple simple est la suivante:
-- test.lua 文件 a == 2
Le code ci-dessus est exécutée à la suite de:
lua: test.lua:2: syntax error near '=='
Comme vous pouvez le voir, il y a eu plus d'une erreur de syntaxe, un signe "=" suivi par deux signe "=" est différent. A "=" est l'expression d'affectation de deux "=" est l'opération de comparaison.
Un autre exemple:
for a= 1,10 print(a) end
Le programme ci-dessus apparaissent les erreurs suivantes:
lua: test2.lua:2: 'do' expected near 'print'
Les erreurs de syntaxe est plus facile que l'exécution d'une erreur de programme, erreur d'exécution incapable de localiser les erreurs spécifiques, les erreurs grammaticales que nous pouvons résoudre rapidement, comme les exemples ci-dessus aussi longtemps que nous faisons dans l'instruction for peuvent être ajoutés:
for a= 1,10 do print(a) end
Exécutez le programme peut effectuer erreur est normal, mais il va afficher un message d'erreur. Les exemples suivants parce que les erreurs de saisie des paramètres, l'erreur d'exécution du programme:
function add(a,b) return a+b end add(10)
Lorsque nous compiler et exécuter le code suivant, le compilateur peut être couronnée de succès, mais au moment de l'exécution produira l'erreur suivante:
lua: test2.lua:2: attempt to perform arithmetic on local 'b' (a nil value) stack traceback: test2.lua:2: in function 'add' test2.lua:5: in main chunk [C]: ?
Le message d'erreur suivant est dû au fait que le programme n'a pas le paramètre b.
Nous pouvons utiliser deux fonctions: assert et erreurs pour gérer les erreurs. Des exemples sont les suivants:
local function add(a,b) assert(type(a) == "number", "a 不是一个数字") assert(type(b) == "number", "b 不是一个数字") return a+b end add(10)
Le programme ci-dessus apparaissent les erreurs suivantes:
lua: test.lua:3: b 不是一个数字 stack traceback: [C]: in function 'assert' test.lua:3: in local 'add' test.lua:6: in main chunk [C]: in ?
Exemple affirmer vérifie d'abord le premier argument, si aucun problème, affirment ne fait rien, sinon, le second argument pour affirmer message d'erreur levée.
Syntaxe:
error (message [, level])
: Termine la fonction en cours d'exécution, et renvoie le contenu du message comme le message d'erreur (fonction d'erreur ne reviendra)
En règle générale, l'erreur sera des informations supplémentaires sur le message d'erreur à la position de la tête.
paramètre de niveau indique la position de se tromper:
la gestion des erreurs Lua, vous pouvez utiliser la fonction pcall (appel protégé) pour envelopper le code à exécuter.
pcall recevoir une fonction et que vous voulez passer un paramètre de ce dernier, et exécuté, le résultat: il y a une erreur, pas d'erreur, ou la valeur de retour de vrai ou faux, ErreurInfo.
La syntaxe est la suivante
if pcall(function_name, ….) then -- 没有错误 else -- 一些错误 end
Exemple simple:
> =pcall(function(i) print(i) end, 33) 33 true > =pcall(function(i) print(i) error('errorfr') end, 33) 33 false stdin:1: errorfr
> function f() return false,2 end > if f() then print '1' else print '0' end 0
pcall dans un "mode protégé" pour appeler le premier argument, donc pcall fonction de capture peut effectuer toutes les erreurs.
Généralement quand une erreur se produit, il espère retrouver avec plus d'informations de débogage, pas seulement là où l'erreur est survenue. Mais les rendements pcall, il a détruit une partie du contenu de l'appel Zhan.
Lua fournit xpcall fonction, xpcall réception d'un second paramètre - un gestionnaire d'erreur quand une erreur se produit, gestionnaire d'erreurs Lua sera appelé avant d'appeler show Zhan pour voir (se détendre), alors vous pouvez utiliser cette fonction dans la bibliothèque de débogage pour obtenir des informations supplémentaires sur l'erreur.
bibliothèque de débogage fournit deux gestionnaire d'erreur générique:xpcall Exemple 2:
function myfunction () n = n/nil end function myerrorhandler( err ) print( "ERROR:", err ) end status = xpcall( myfunction, myerrorhandler ) print( status)
Le programme ci-dessus apparaissent les erreurs suivantes:
ERROR: test2.lua:2: attempt to perform arithmetic on global 'n' (a nil value) false