Я внедряю интерпретатор Lua в свой текущий проект (написанный в C), и я ищу пример того, как обрабатывать ошибки. Это то, что я до сих пор ...Обработка ошибок в Lua с использованием longjmp
if(0 != setjmp(jmpbuffer)) /* Where does this buffer come from ? */
{
printf("Aargh an error!\n");
return;
}
lua_getfield(L, LUA_GLOBALSINDEX, "myfunction");
lua_call(L, 0, 0);
printf("Lua code ran OK.\n");
Руководство просто говорит, что ошибки выбрасываются с помощью longjmp функции но longjmp нужен буфер. Должен ли я предоставить это, или Lua выделяет буфер? Руководство немного расплывчато.
Ммм, я мог бы быть ложное дерево с этим, после того, как делают некоторый RTFS, я думаю, что вся setjmp/longjmp вещь может быть внутренней в Lua. Возможно, ошибки обрабатываются каким-то другим способом, с которыми я еще не справился. Я все еще расследую. –
ОК, я решил. Мне нужно использовать функцию lua_pcall, если я хочу поймать ошибки. –