加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 00:15:40 所属栏目:大数据 来源:网络整理
导读:Lua有luaL_error和lua_error函数在C函数中使用,如: luaL_error( L,"something bad" ); 这将导致显示错误消息并且Lua执行停止.错误消息将包含它出现的行和文件: Error: ../example/ex01.lua:6: something bad 是否有类似的函数显示错误但不破坏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: %sn",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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读