【问题标题】:Lua, Error Handling pcall()Lua,错误处理 pcall()
【发布时间】:2018-05-20 10:26:55
【问题描述】:
local a = {1,2,3,4}

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

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

【问题讨论】:

    标签: lua


    【解决方案1】:
    -- 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() 工作,函数需要在不带括号的情况下传递。

    【讨论】:

      【解决方案2】:

      pcall中第一个传入的参数是函数名,你在例子中是数组,恐怕不合法

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

      【讨论】:

        猜你喜欢
        • 2016-10-21
        • 1970-01-01
        • 1970-01-01
        • 2018-01-29
        • 2013-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-30
        相关资源
        最近更新 更多