【发布时间】:2018-05-20 10:26:55
【问题描述】:
local a = {1,2,3,4}
print(pcall(#a[1])) -- still error
如果出现错误,pcall() 应该返回 false,如果一切正常,应该返回 true?我该如何处理错误?
【问题讨论】:
标签: lua
local a = {1,2,3,4}
print(pcall(#a[1])) -- still error
如果出现错误,pcall() 应该返回 false,如果一切正常,应该返回 true?我该如何处理错误?
【问题讨论】:
标签: lua
-- Example 1.
a = {1,2,3,4}
function check()
return #a[1]
end
print(pcall(check)) -- false | attempt to get length of field '?' (a number value)
local v, massage = pcall(check)
print(v, massage) -- "v" contains false or true, "massage" contains error string
-- Example 2.
-- Passing function and parameter...
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 | attempt to perform arithmetic on local 'v' (a string value)
要使pcall() 工作,函数需要在不带括号的情况下传递。
【讨论】:
pcall中第一个传入的参数是函数名,你在例子中是数组,恐怕不合法
【讨论】: