我在當前項目中嵌入了一個Lua解釋器(編寫於C),我在尋找一個如何處理錯誤的例子。這是我迄今爲止...在Lua中使用longjmp處理錯誤
if(0 != setjmp(jmpbuffer)) /* Where does this buffer come from ? */
{
printf("Aargh an error!\n");
return;
}
lua_getfield(L, LUA_GLOBALSINDEX, "myfunction");
lua_call(L, 0, 0);
printf("Lua code ran OK.\n");
手冊只是說,錯誤使用的longjmp函數拋出,但longjmp的需要一個緩衝。我需要提供嗎?還是Lua分配緩衝區?這本手冊有點含糊。
嗯,我可能會找錯了樹本,做一些RTFS後,我覺得整個的setjmp/longjmp的事情可能在Lua是內部的。也許錯誤以我尚未解決的其他方式處理。我仍在調查。 – 2010-02-16 05:14:07
好的,我解決了。如果我想捕捉錯誤,我需要使用lua_pcall函數。 – 2010-02-16 07:12:30