-- 打印错误信息
local function __TRACKBACK__(errmsg)
local track_text = debug.traceback(tostring(errmsg), );
print("---------------------------------------- TRACKBACK ----------------------------------------");
print(track_text, "LUA ERROR");
print("---------------------------------------- TRACKBACK ----------------------------------------");
local exception_text = "LUA EXCEPTION\n" .. track_text;
return false;
end --[[ 尝试调一个function 这个function可以带可变参数
如果被调用的函数有异常 返回false,退出此方法继续执行其他代码并打印出异常信息;]]
function trycall(func, ...)
local args = { ... };
return xpcall(function() func(unpack(args)) end, __TRACKBACK__);
end
--测试代码: trycall(function(param)
      print("message "..param)
      print("message "..nil)
end, "test trycall")

##输出结果如下:

>lua -e "io.stdout:setvbuf 'no'" "itertor_test.lua"
message test trycall
---------------------------------------- TRACKBACK ----------------------------------------
itertor_test.lua:45: attempt to concatenate a nil value
stack traceback:
itertor_test.lua:43: in main chunk
[C]: ? LUA ERROR
---------------------------------------- TRACKBACK ----------------------------------------
>Exit code: 0

xpcall (f, err)

This function is similar to pcall,except that you can set a new error handler.

xpcall calls function f in protected mode,using err as the error handler.Any error inside f is not propagated;instead, xpcall catches the error,calls the err function with the original error object,and returns a status code.Its first result is the status code (a boolean),which is true if the call succeeds without errors.In this case, xpcall also returns all results from the call,after this first result.In case of any error,xpcall returns false plus the result from err.

最新文章

  1. xenserver
  2. POJ3691DNA repair
  3. springmvc学习(三)
  4. 【InstallShield】 为什么卸载后有的文件没有删掉
  5. LabVIEW系列——错误簇的传递
  6. keil多文件组织方法
  7. C语言的本质(29)——C语言与汇编之寄存器和寻址方式
  8. Win7下安装composer, 并使用其安装smarty
  9. PTA中提交Python3程序的一些套路
  10. jenkins默认会存放目录
  11. redis中的数据类型
  12. Codeforces 247D Mike and Fish
  13. Flink – WindowedStream
  14. map文件的使用
  15. EGit系列第二篇——关联远程仓库
  16. Django-Form表单(验证、定制、错误信息、Select)
  17. POJ2186:Popular Cows(tarjan+缩点)
  18. 第一个openGL程序
  19. bzoj 4372 烁烁的游戏——动态点分治+树状数组
  20. jquery 等html加载完成再绑定事件

热门文章

  1. 14.Xcode8imageview图片圆角不显示的bug
  2. ARC模式下的内存泄露问题
  3. doxygen的使用(二)给代码添加javadoc风格的注释
  4. 【转载】【树形DP】【数学期望】Codeforces Round #362 (Div. 2) D.Puzzles
  5. Asp.Net 利用反射获得委托和事件以及创建委托实例和添加事件处理程序
  6. 中国UTM分区
  7. JS-JQuery(JSONP)调用WebService跨域若干技术点
  8. HTML5中的 Canvas
  9. java基础4_字符串
  10. 关于css3媒体查询和响应式布局