2016-07-24 100 views
2

不执行这是非常自我解释,但...如果出现错误,打印错误消息

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

我知道我的错误的if语句,但我要说的是我怎么就没有运行如果它不是有效的Lua命令,而是输出错误。如果它是有效的Lua我如何确保错误刚刚停止,并且运行打印的错误消息而不会崩溃。我在Linux上顺便说一句,如果它需要os.execute()

回答

1

loadstring(或load,因为Lua的5.2)如果块有语法错误返回nil加上错误消息。所以你可以这样检查load的结果:

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