当 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());
}