发生错误后,如何确保(luabind)lua状态良好?
|
当lua代码导致异常时,luabind将在堆栈上留下一条错误消息供我收集。我想知道如何在处理异常后确保lua堆栈处于明智状态:
我找到的示例告诉我使用
luabind::from_stack(e.state(), -1)
。这不会使错误消息仍留在堆栈中吗?我不应该弹出它吗?
从堆栈弹出错误消息是否足够?该错误是否会导致其他垃圾遗留在堆栈上?
发生错误后,如何确保lua状态良好?
这是我所拥有的:
try {
// Do lua-stuff here that causes an exception from lua
}
catch (const luabind::error& e) {
luabind::object error_msg(luabind::from_stack(e.state(), -1));
std::stringstream ss;
ss << error_msg;
throw my_own_exception_class(ss.str());
}
没有找到相关结果
已邀请:
2 个回复
际恃啸称桅
函数的调用都会SEGFAULT / crash / etc \”。无论您抛出什么C ++异常,这都永远不会发生,这是Luabind的责任,谨防这种情况。 Luabind会抛出和处理任何C ++异常,因为Lua本身是用C编写的,并且在世界上没有异常之类的东西。 如“在堆栈中不再需要某些值”中一样。堆栈上不应留有垃圾。如果您感到偏执,请在调用Lua API链之前随时用
清除堆栈。
捅瓶啡