2016-08-05 33 views
-1
local a = {1,2,3,4} 

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

Sollte pcall() Rückkehr false wenn Fehler und true wenn alles gut? Wie kann ich Fehler umgehen?Lua, Fehlerbehandlung pcall()

Antwort

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) 

Für pcall() funktioniert, muss Funktion mit aus Klammern übergeben werden.