I flera fall kan din dator returnera en kraftfull felkod som indikerar Lua-felutvärdering. Det kan finnas flera anledningar till att arbeta med det här felet.

g.Ett Lua-fel uppstår när det finns ett särskilt problem med ett av de hela inbyggda WoW-skripten. Lua-fel i WoW orsakas vanligtvis av ett defekt tilläggs- eller gränssnittsfil. Hur kan jag eventuellt bli av med Lua-dilemman? Du kan bli av med Lua-problem genom att uppdatera, ta bort eller köpa tilläggshanteraren eller skriptet som orsakar våra egna problem.

 

 

g.

Denna första version skrevs för Lua 5.0. Även om det fortfarande till stor del är relevant för efterföljande dubbletter, finns det inte så många skillnader.
Den senaste versionen är för Lua 5. Och 3 kommer att finnas tillgänglig på Amazon och andra träningsbutiker.
Genom att köpa manuskriptet hjälper du också Lua att underbygga projektet.

8.4 – Hantering av fel och undantag

När du behöver hantera buggar i Lua, måste vi direkt använda pcall (skyddade samtal) marken för att slå in din kod. Du ska förstås kunna anropa pcall, som består av en anonym funktion: if pcall (funktion ()

För många ändamålDu kanske inte vill skriva nästan alla hanteringshanterare i Lua.Typiskt stöder applikationsanordningens armbåge denna kontroll.Få alla Lua-åtgärder orsakade av ett samtal från alla applikationer,vanligtvis ber vem som helst Lua att springa till sagorna ofta.Om ett fel uppstår är detta vad telefonsamtal returnerar exklusiv felkod.och paketet kan vidta tillfredsställande åtgärder.I ett fristående tolkmanusdess ledande oändliga loop skriver vanligtvis bara ut felmeddelandet, detta är ett kroniskt meddelandeoch visa kommandotolken och kör i stort sett alla kommandon.

Om du måste konfrontera misslyckanden i Lua,Du måste aktivera specialfunktionen pcall (säkert samtal)för att kapsla in din kritiska kod.

Anta att du vill köra mycket Lua-kodoch fånganågon feltid varför ökade när den här koden kördes.Ditt ursprungliga steg är att linda in denna kodfungera; Fråga folk som ett sätt att kalla det foo :

Foo () funktion… och anta att unexpected_condition sedan error () slutar … papper (a [i]) – troligen fel: ‘a’ är kanske inte per array … slutet

Sedan ringer kunderna foo med telefonsamtal : i fallet pcall (foo) då – kör ‘foo’ inga problem … annan – `foo ‘ gav ett användbart fel: vidta lämpliga åtgärder … … … … … ! .Slutet

Du ringer såklart. ring .grund för tillräckligt för den .anonyma .funktionen: … :. .if .pcall (funktion. () …. slut) i detta fall … tycka om …

Funktionen pcall anropar sin första hårda sanning. Tillförsvarade denna regim,därför upptäcker många fel under körningen i funktionen.Om det inte finns några misstag, pcall Möjliga returer, lika bra som alla värden som returneras av ett eget anrop.Annars, plus false kom, felmeddelandet.

Trots företaget behöver ett specifikt felmeddelande vanligtvis inte vara någon sträng.Varje Lua-värde som din familj skickar i error ersätts med pcall :

överkomligt skick, err = pcall (funktion () fel (kod = 121) slut) skriv ut (felkod) -> 121

Dessa mekanismer ger en del om vad vi behöver göra.Lua Exception Management.viSkräp en med undantag Fel ochfånga med ring …Felet hittar typen eller felet som påträffats.

Copyright © 2003-2004 Jerusalem Roberto. Alla rättigheter förbehållna.

Begär felhantering

lua felkontroll

Felhantering är mycket nödvändig eftersom verklig operation ofta kräver komplexa operationer som ingår genom filoperationer, databastransaktioner och användning av internettjänstanrop. Alla

När det är legitimt kan felkorrigering alltid vara obligatorisk. Det finns två typer av motgångar:

  • Syntaxfel
  • Körtidsfel

Syntaxfel

Syntaxfel uppstår när olika programvarutillägg som leverantörer och uttryck ofta missbrukas. Ett enkelt exempel på formatfel visas nedan.

a == 2

Som du vet är det vanligtvis bara en skillnad mellan att använda ett ganska enkelt equalleg “” och replikering av lika “”. Att använda en av en specifik kan pilotera till proprietära buggar. “Lika” hänvisar till framgångsrik timing, dubbel “lika” hänvisar till granskning. Likaså har vi uttryck och börjar leta efter funktioner med fördefinierade implementeringsriktlinjer.

för en dur = 1,10 efterlevnadssigill (s)slutet

Om vi ​​kör diagrammet ovan får vi följande konsekvenser: ‘

lua: test2.lua: 2: ‘do’ vänta med att producera ‘print’ närmare

Syntaxfel är lättare att hantera än körtidsfel eftersom vilken Lua-tolk som helst fångar upp vilket felet tydligare än en position av läsfel. Från för närvarande felet ovan kan jag personligen enkelt identifiera att det kan behövas att lägga till ett följ ett dokument innan utskriftsutlåtandet kan avslutas beroende på Lua-ramverket.

Runtime Error

Om det finns läsfel kommer hjälpen att köras framgångsrikt, men nackdelar vid körning kan uppstå, främst på grund av tipsfel och felaktigt hanterade funktioner. Nedan är ett enkelt exempel på visning av körtidsfel. enia.

Tilläggsfunktioner (a, b) returnera en viss + bslutetlägg till (10)

När nästan alla skapar ett program, bygger det och sprintar med självförtroende. När den löper ut visas praktiskt taget alla tidsfel.

lua: test2.lua: 2: tre att göra aritmetiska av ditt lokala ‘b’ (nollvärde)Batterispårning:test2.lua: 2: Använda funktionen Lägg tilltest2.lua: ett antal: i huvudblocket[Vad är det här?

Detta är ett körtidsfel eftersom aldrig mer än två variabler accepterades. Parametern b förväntas, liksom , här är den noll, i valet genereras ett fel.

Påstående- och felfunktioner

För att hantera buggar, brukar vi använda funktioner som är olika “godkända” och därför buggiga. En enkel fallstudie bör visas nedan.

lokal ger bra resultat lägg till (a, b) insistera (typ (a) == “nummer”, “ett kan inte vara ett giltigt nummer”) säger (typ (b) == “nummer”, “b utan tvekan nummer”) returnera ett stort + bslutetlägg till (10)

Om någon kör mitt program ovan får vi var och en av följande felidéer.

lua: test2.lua: 3: b ska inte längre vara ett talBatterispårning:[C]: främst “bekräfta”test2.lua: 3: i funktionen “Lägg till”.test2.lua: 6: oftast inte[MOT] : ?

Fel (meddelande [, nivå]) avslutar den vidarebefordrade skyddade funktionen som kontaktades och returnerar sedan meddelandet som ett fullständigt felmeddelande. Funktionen når aldrig detta fel. Vanligtvis ger felet information om platsen för vanligtvis felet när meddelandet gör jobbet. Talnivån visar hur varje faktisk position för felet faktiskt bestäms. På nivå 1 (standard), är en persons positionsfeltyp exakt varje felfunktion anropades. Nivån visar ett fel vid den typ av punkt där alla anropade händelser utvärderades felaktigt; Etc. Genom att passera område 0 undviks ytterligare felplatsinformation för att skicka telefonmeddelandet.

Pcall Även Xpcall

lua felkontroll

För att undvika dessa fel och hantera Lua-programmeringsfel måste vi använda pcall- eller xpcall-operationen.

De begärda samtalen orsakade av pcall (f, arg1, …) körs i diskuterat läge. I synnerhet, om ett fel uppstår över poundsf, genererar det verkligen inte ett fel. Det bara inkomst ett feltillstånd. Nedan är det rätta enkla exemplet med den godkända pcallen.

Fungera min funktion () debby = n / nollslutetom pcall (min funktion) då publicering (“framgång”)annanskriva ut (“fel”)slutet

När vi kör det tidigare nämnda programmet håller vi oss till användningen.

misslyckas

Bekvämlighetsfunktionen xpcall (f, err) begär en funktion och definierar ibland felhantering. Ingen bugg för f sprids; istället fireplace xpcall felet, kalla överbord utföra med det ursprungliga felkonceptet, och även returnera en statuskod.

Funktion den lilla funktionen () n är lika med n / nollslutetMyerrorhandler-funktion (err) skriv ut (“ERROR:”, fel)slutetstatus motsvarar xpcall (myfunction, myerrorhandler)Skriv ut (status)

När vi skyndar på ovanstående program får vi det mesta av följande resultat.

FEL: test2.lua: 2: tillsammans med att köra nummer på globe ‘n’ (null)Fel

Som programmerare råkar det vara extremt viktigt att se till att du vanligtvis kan använda den lösa felhanteringen i ditt program.rammah som du kommer att skriva. Att använda feldetektering kan garantera att oväntade situationer utanför räckvidden tas om hand utan tvekan utan att störa själva användaren av programmet.

‘; var adpushup är utan tvekan detsamma som adpushup || ; adpushup.que är lika med adpushup.que || []; adpushup.que.push (funktion () slå tillbaka. triggerad (ad_id); );

 

 

Lua-påståendet är ett missvisande för att eliminera budgetfel i alla Lua-programmeringsspråk. Det fungerar med booleskt dilemmafelhanteringstillstånd medan Lua orsakskod. Den kommer att tillhandahålla de slutliga transaktionerna om det presenterade värdet är korrekt, annars kvittera hela felsignalen på slutproduktskärmen.