错误处理 – 是否有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.

相关文章

1.进入lua官网http://www.lua.org/ 2.点击download 3.点击get a binary 4.点击[Lua - joedf's ...
    Lua中的函数是一阶类型值(first-class value),定义函数就象创建普通类型值一样(只不过函数类型...
    并发是现实世界的本质特征,而聪明的计算机科学家用来模拟并发的技术手段便是多任务机制。大致上...
    Lua5.0的语法非常简洁,这从参考手册中的语法定义的规模(转换成标准BNF形式大概有100个左右的产...
LUA脚本文档中文翻译(基础)   介绍   Lua读作“鹿啊”,是一种据创作者说的类Pascal脚本语言。巴西...
1. 函数的使用 以下程序演示了如何在Lua中使用函数, 及局部变量 例e02.lua -- functions function pyth...