错误处理 – 是否有Lua警告而不是Lua错误?

Lua有luaL_error和lua_error函数在C函数中使用,如:

luaL_error( L, "something bad" );

这将导致显示错误消息并且Lua执行停止.错误消息将包含它出现的行和文件:

Error: ../example/ex01.lua:6: something bad

是否有类似的函数显示错误但不破坏lua执行?但显示它出现的位置.

最佳答案
复制源代码luaL_error,并使用字符串lua_tostring(L,-1)通过适当调用printf将结果替换为lua_error.像这样的东西:

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

不要忘记通过在lbaselib.c中添加一个名为base_funcs的条目或通过调用lua_register(L,“warn”,luaB_warn)将其导出到Lua.

转载注明原文:错误处理 – 是否有Lua警告而不是Lua错误? - 代码日志