Lua,错误处理pcall()

时间:2016-08-05 18:57:57

标签: lua

local a = {1,2,3,4}

print(pcall(#a[1])) -- still error

pcall()如果错误则返回falsetrue如果一切正常,该怎么办?

2 个答案:

答案 0 :(得分:6)

-- 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()起作用,需要使用括号传递函数。

答案 1 :(得分:1)

pcall中第一个传入的参数是函数名,你在示例中有的是数组,不合法我害怕

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