error 、 assert、xpcall
来源:互联网 发布:ubuntu解压缩命令 编辑:程序博客网 时间:2024/06/14 16:02
xpcall接受两个参数:调用函数、错误处理函数。当错误发生时,Lua会在栈释放以前调用错误处理函数,因此可以使用debug库收集错误相关信息。有两个常用的debug处理函数:debug.debug和debug.traceback,前者给出Lua的提示符,你可以自己动手察看错误发生时的情况;后者通过traceback创建更多的错误信息,也是控制台解释器用来构建错误信息的函数。你可以在任何时候调用debug.traceback获取当前运行的traceback信息:
print(debug.traceback())
函数error可以有第二个参数,表示错误发生的层级。比如,你写了一个函数用来检查“error是否被正确调用”:
function foo (str)
if type(str) ~= "string" then
error("string expected")
end
...
end
可有人这样调用此函数:
foo({x=1})
Lua会指出发生错误的是foo而不是error,实际上,错误是调用error时产生的。为了纠正这个问题,修改前面的代码让error报告错误发生在第二级(你自己的函数是第一级)如下:
function foo (str)
if type(str) ~= "string" then
error("string expected", 2)
end
...
end
n= io.read("*number")
if not n then error("invalid input")end
以上两行等价于 n = assert(io.read("*number"), "invalid input")
assert的第一个参数为不为false,则返回第一个参数的值;否则,执行error函数,输出错误信息,错误信息的内容为assert的第二个参数。
- error 、 assert、xpcall
- Lua xpcall
- error C2065: 'assert' : undeclared identifier
- Lua中xpcall函数
- lua: pcall xpcall debug
- Lua中的pcall,xpcall
- assert error : cctouchdispatcher forceaddhandler line 121 || android
- error C3861: 'ASSERT': identifier not found
- error C3861: 'assert': identifier not found
- Syntax error on token "package", assert expected
- Syntax error on token "package", assert expected
- lua异常处理机制xpcall
- assert
- assert
- assert
- assert
- ASSERT()
- assert
- mysql恢复报ERROR 2006 (HY000) at line 5303856: MySQL server has gone away错误处理
- 安卓那些你不得不收藏的开源第三方库
- 代码缩进的简易实现(Python实现)
- Shiro Ajax请求没有权限返回JSON,没有登录返回JSON
- 【error】Tomcat启动报错com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector
- error 、 assert、xpcall
- spring queryForObject 错误org.springframework.dao.EmptyResultDataAccessException: Incorrect result siz
- MySQL查询执行步骤
- android屏幕共享及远程控制原理
- MySQL查询优化小结
- NOW~很少有人分享错误信息的解决方法,查阅百度都是几年前的
- 不仅仅是写代码,而是完成作品
- 51nod编辑距离问题
- PHP常用加密函数