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