1

C++ で書かれた次の lua_CFunction があります。

int my_function(lua_State* L) {
    int x = 0;
    try {
        x = do_cpp_stuff_that_invokes_lua_API_as_well();
    } catch(const std::exception& ex) {
        lua_pushstring(ex.what().c_str());
        lua_error(L);
    }
    return x;
}

私の質問は次のとおりです。

  • tryブロックで?
  • キャッチブロックで?

デストラクタに依存するもの (文字列など) を割り当てないことで、スタックに割り当てられた変数を処理します。それを行う必要がある場合、そのスコープ内のすべての lua 関数が pcall にラップされ、その pcall が失敗すると、私が投稿したこの関数に例外がスローされます。ただ、私は try-catch ブロックに関心があります。

どうもありがとう

4

2 に答える 2