我正在处理错误处理,它几乎可以正常工作,但在最重要的步骤上失败了。
在此文件中," KAImage.lua"我的语法错误(=
vs ==
)以及
print(status, err = pcall(os.execute, "/System/Library/Frameworks/Kakao.framework/KAImage.lua"))
调用它给我带回溯的错误及其true true
之后,所以意味着pcall()
绝对忽略异常。
脚本执行没有停止,我无法确定问题出在哪里。
答案 0 :(得分:1)
os.execute
在执行命令失败时不会引发任何错误;它返回nil
作为发出错误的第一个值以及一些其他值,如described in the manual。
答案 1 :(得分:1)
您的代码段有语法错误,正确的代码应如下所示:
local status, err = pcall(os.execute, "/System/Library/Frameworks/Kakao.framework/KAImage.lua")
print(status, err)
我不认为使用os.execute
执行Lua文件是个好主意。
它适用于合适的shebang,但会产生单独的过程。
您需要的IMO是dofile(lua_file_name)
:
打开指定文件并将其内容作为Lua块执行。 ...返回块返回的所有值。的情况下 错误,dofile将错误传播给它的调用者(即dofile 不在保护模式下运行。)
pcall的工作是捕获错误,如果你确实需要捕获错误,你可以使用如下代码:
local chunk, err = loadfile(lua_file_name)
if not chunk then
-- invalid Lua code, check err
return
end
local ok, err = xpcall (chunk, debug.traceback))
if not ok then
-- error was catched, err contains detailed stack info and error description
return
end
-- success