我正在使用 Lua(和 C++)进行编码。我想捕获异常并将它们打印到控制台中。之后lua_atpanic
无法正常工作(程序无论如何都退出了)。我想使用例外。
这是我的编辑部分luaconf.h
:
/* C++ exceptions */
#define LUAI_THROW(L,c) throw(c)
#define LUAI_TRY(L,c,a) try { a } catch(...) \
{ if ((c)->status == 0) (c)->status = -1; }
#define luai_jmpbuf int /* dummy variable */
这是init.lua
加载的:
int init = luaL_loadfile(L, "lua/init.lua");
if(init == 0)
{
printf("[LUA] Included lua/init.lua\n");
init = lua_pcall(L, 0, LUA_MULTRET, 0);
}
所以现在我想,在使用 C++ 异常时,我会将该代码编辑为以下内容:
try {
int init = luaL_loadfile(L, "lua/init.lua");
if(init == 0)
{
printf("[LUA] Included lua/init.lua\n");
init = lua_pcall(L, 0, LUA_MULTRET, 0);
}
// Error Reporting
if(init != 0) {
printf("[LUA] Exception:\n");
printf(lua_tostring(L, -1));
printf("\n\n");
lua_pop(L, 1);
} else {
lua_getglobal(L, "Init");
lua_call(L, 0, 0);
}
} catch(...)
{
MessageBox(NULL, "Hi", "Hio", NULL);
}
只是看看有没有什么事情发生。但什么也没有发生。(Lua 错误是调用一个nil
值)
有任何想法吗?