Lua,错误处理pcall()

本地a = {1,2,3,4}

print(pcall(#a[1])) -- 仍然出错

如果出错则pcall()应该返回false,如果一切正常则返回true?我该如何处理错误?

点赞
用户6101071
用户6101071

-- 示例 1.

a = {1, 2, 3, 4}

function check() return #a[1] end

print(pcall(check)) -- false | 尝试获取 '?' 字段的长度(一个数值)

local v, massage = pcall(check)

print(v, massage) -- "v" 包含 false 或 true,"massage" 包含错误字符串

-- 示例 2. -- 传递函数和参数...

function f(v) return v + 2 end

a, b = pcall(f, 1) print(a, b) --> true | 3

a, b = pcall(f, "a") print(a, b) -- false | 尝试对本地变量 'v' (一个字符串类型)执行算术运算

要让 pcall() 起作用,函数必须用无括号的方式传递。

2016-08-05 19:21:41
用户5120986
用户5120986

将下面翻译成中文并且保留原本的 markdown 格式,

pcall 中第一个传入的参数是函数名,而在你的例子中却是一个数组,我担心这是不合法的。

https://www.lua.org/pil/8.4.html

2017-10-20 06:38:38