1.接口使用问题
提供错误返回的接口是lua_pcall ,看看是不是调用了lua_call这个接口
函数原型:
void lua_call (lua_State *L, int nargs, int nresults);//nargs参数个数,nresults返回值个数。
void lua_pcall(lua_State *L,int nargs, int nresults,int nerrfunc);//多一个参数,处理错误代码返回。
void lua_cpcall(lua_State *L,int nargs, int nresults,int nerrfunc,void* ud)//传递用户自定义的数据结构的指针。
2.没有处理协程返回的错误
参考:http://lua-users.org/wiki/CoroutinesTutorial
coroutine.resume会返回两个参数,第一个是调用状态,第二个是错误信息。
加入调用状态不为TRUE,则这个协程执行失败,用第二个错误信息打印出来。
妈蛋,被这个错误信息坑出翔了,开始我一直觉得是LUA自身对于一些没法检测错误的信息不报错处理的问题。
然后越想越不对劲,有几次错误查询都找了N久,然后就想到这样一个完善的语言不应该有这个问题才对。
然后我就去找LUA的API接口,找到了PCALL,这个是对的没问题。
然后想了下好像所有错误都是在回调的情况发生,回调是因为注册了函数。才找到一个直接拿别人来用的小模块的协程事件这个玩意。不查不知道一查吓一跳,他竟然把错误信息给无视了!!并且不返回给接口,相当于直接扔掉了错误。
全国用这个小模块的人没有一万也有几千,这么多人都不反馈一下?
不成大气的码农们啊!!