2012-01-09 226 views
1

我有一个来自我的软件以前版本的配置文件,配置文件基本上是一个Lua脚本。我正在使用swig生成包装器,以便与我的软件的C API进行交互。Lua继续执行脚本

我遇到的问题是前一个配置文件中的某些指令已在当前版本的软件中删除。

当我加载并运行Lua文件时,执行停止在第一个错误,其余的配置文件不会执行。

如何让Lua报告错误并在下一条指令中继续执行脚本?

+0

顺便说一下,它是Lua而不是LUA。这不是一个缩写,只是为了让你高高兴兴。 – jpjacobs 2012-01-09 08:28:36

回答

2

你可能想看看the error handling section in the Lua Manual (看这里for version5.1)。

这一切归结为把“敏感”代码放入一个函数,并与pcall调用它。

有关处理错误的更多信息in Programming in Lua

+0

Im使用以下代码: if(luaL_dostring(L,code)) printf(“error:%s \ n”,lua_tostring(L,-1)); lua_pop(L,1); } 一旦遇到错误,我该如何继续继续/继续下一个Lua指令的变量代码(这是一个相当大的块),出现错误之后。我不能真正解析变量代码中的Lua指令,因为有一些if,函数等等......我必须告诉Lua继续执行脚本,即使发现错误也是如此。这可能吗? – McBob 2012-01-09 09:49:49

+0

不,就像这是不可能的。您应该将可能出错的代码封装在'pcall'中。一旦发生错误,只有逻辑Lua不能继续执行该块,并且它将退出'pcall'。执行将仅在'pcall'后恢复。所以你需要深入了解Lua代码。 – jpjacobs 2012-01-09 10:33:05