Когда код 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());
}