2012-01-09 225 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