Lua的pcall函数
来源:互联网 发布:文艺复兴 知乎 编辑:程序博客网 时间:2024/06/06 09:22
转载自:http://blog.csdn.net/zzh0923/article/details/12968655
很多应用中,不需要在Lua进行错误处理,一般有应用来完成。通常应用要求Lua运行一段chunk,如果发生异常,应用根据Lua返回的错误代码进行处理。在控制台模式下的Lua解释器如果遇到异常,打印出错误然后继续显示提示符等待下一个命令。
如果在Lua中需要处理错误,需要使用pcall函数封装你的代码。
假定你想运行一段Lua代码,这段代码运行过程中可以捕捉所有的异常和错误。
第一步:将这段代码封装在一个函数内
function foo ()
...
if unexpected_condition then error() end
...
print(a[i]) -- potential error: `a' may not be a table
...
end
第二步:使用pcall调用这个函数
if pcall(foo) then
-- no errors while running `foo'
...
else
-- `foo' raised an error: take appropriate actions
...
end
当然也可以用匿名函数的方式调用pcall:
if pcall(function () ... end) then ...
else ...
pcall在保护模式(protected mode)下执行函数内容,同时捕获所有的异常和错误。若一切正常,pcall返回true以及“被执行函数”的返回值;否则返回nil和错误信息。
错误信息不一定仅为字符串(下面的例子是一个table),传递给error的任何信息都会被pcall返回:
local status, err = pcall(function () error({code=121}) end)
print(err.code) --> 121
这种机制提供了强大的能力,足以应付Lua中的各种异常和错误情况。我们通过error抛出异常,然后通过pcall捕获之。
源地址:http://book.luaer.cn/_54.htm
- Lua的pcall函数
- Lua的pcall函数
- Lua的pcall函数
- Lua的pcall函数
- Lua的pcall错误处理
- Lua的pcall错误处理
- lua pcall
- 在Lua的pcall内部崩溃
- Lua的pcall错误处理定位行号
- Lua中 assert、pcall 的错误处理
- lua: pcall xpcall debug
- lua pcall 异常处理
- Lua中的pcall,xpcall
- lua pcall error
- pcall
- pcall
- Lua 异常处理 pcall xpcall debug
- Lua之pcall和xpcall之学习
- c语言心形告白
- 导航练习
- java.lang.UnsupportedClassVersionError: Bad version number in .class file异常的处理方法
- 动态规划 最长公共子序列
- Python Flask在Windows下的环境配置
- Lua的pcall函数
- hdu5015——233 Matrix(矩阵快速幂)
- 记一次synchronized锁字符串引发的坑兼再谈Java字符串
- C中关于数组以及数组的简单运算
- 13.模块与包
- debug--process
- java.sql.SQLException: 无法从套接字读取更多的数据
- Glide详解(基础篇)
- 编程题(4):餐馆