2016-07-24 2 views
2

Das ist ziemlich selbsterklärend, aber ...nicht ausführen, wenn ein Fehler und Druckfehlermeldung ist

if input~=nil then 
    docom=loadstring(input) 
    print(docom()) 
else 
    print("Command execution failed") 
end 

Ich kenne meine Fehler auf dem if-Anweisung, aber mein Punkt ist, wie kann ich es nicht laufen Wenn es sich nicht um einen gültigen Lua-Befehl handelt, wird stattdessen ein Fehler ausgegeben. und wenn es Lua gültig ist, wie stelle ich sicher, dass Fehler einfach gestoppt werden und es eine gedruckte Fehlermeldung ohne Absturz ausführt. Ich bin auf Linux btw wenn es os.execute()

Antwort

1

loadstring erfordert (oder load, da Lua 5.2) liefert nil und die Fehlermeldung, wenn der Chunk syntaktische Fehler enthält. So können Sie einfach das Ergebnis von load wie folgt überprüfen:

local chunk = 'foo' 
local f, err = loadstring(chunk) 
if not f then 
    print(err) 
else 
    f() 
end 
Verwandte Themen