Zhe*_*hen 7 error-handling lua warnings
Lua有luaL_error和lua_error函数在C函数中使用,如:
luaL_error( L, "something bad" );
Run Code Online (Sandbox Code Playgroud)
这将导致显示错误消息并且Lua执行停止.错误消息将包含它出现的行和文件:
Error: ../example/ex01.lua:6: something bad
Run Code Online (Sandbox Code Playgroud)
是否有类似的函数显示错误但不破坏lua执行?但显示它出现的位置.
复制luaL_error的源代码,并lua_error在最后使用适当的printf使用字符串的调用替换该调用lua_tostring(L,-1)。像这样:
LUALIB_API int luaL_warn (lua_State *L, const char *fmt, ...) {
va_list argp;
va_start(argp, fmt);
luaL_where(L, 1);
lua_pushvfstring(L, fmt, argp);
va_end(argp);
lua_concat(L, 2);
printf("warning: %s\n",lua_tostring(L,-1));
return 0;
}
static int luaB_warn (lua_State *L) {
return luaL_warn(L, "%s", luaL_checkstring(L, 1));
}
Run Code Online (Sandbox Code Playgroud)
别忘了通过在base_funcsin中输入内容lbaselib.c或通过调用将其导出到Lua lua_register(L,"warn",luaB_warn)。