2012-01-09 7 views
1

私のソフトウェアの以前のバージョンの設定ファイルを持っています。設定ファイルは基本的にLuaスクリプトです。私はswigを使用して、私のソフトウェアのC APIとインターフェースするためのラッパーを生成しています。Luaはスクリプトの実行を続行します

問題は、以前の設定ファイルのいくつかの指示が、現在のバージョンのソフトウェアで削除されていることです。

Luaファイルをロードして実行すると、最初のエラーで実行が停止し、残りの設定ファイルは実行されません。

私はLuaにエラーを報告させ、次の命令でスクリプトの実行を続けることができますか?

+0

これは、LUAではないLUAです。これは頭​​字語ではなく、あなたに頭を上げることです。 – jpjacobs

答えて

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( "エラー:%s \ n"、lua_tostring(L、-1)); lua_pop(L、1); } エラーが発生したら、どのようにエラーを返した後に、可変コード(かなり大きなブロックです)の次のLua命令を再開/続行するにはどうすればよいですか? if、関数などがあるので、私は実際には変数コードのLua命令を解析できません...エラーが見つかったとしてもスクリプトの実行を続けるようにLuaに指示する必要があります。これは可能ですか? – McBob

+0

いいえ、それは不可能です。 'pcall'でエラーの可能性があるコードをラップする必要があります。エラーが発生すると、論理的なLUAだけがチャンクの実行を続行できず、 'pcall'から落ちます。実行は 'pcall'の後でのみ再開されます。だから、あなたはLuaコードに飛び込む必要があります。 – jpjacobs

関連する問題