有没有办法在try / catch块中包装赋值表达式。
Window = {}
Window.mt = {}
Window.mt.__newindex =function(t,k,v)
if k=="x" or k=="y" then error("Readonly field", 2) end
t[k]=v
end
--w is a window 'type'
--try/catch this assignment
w.x = 50
感谢 EM
答案 0 :(得分:2)
Lua没有try / catch块,但是提供pcall函数接受函数作为其参数(以及可选参数)并捕获/报告该函数中的运行时错误。
所以,你可能有类似if not pcall(function() w.x = 50 end) then ... end
的东西(假设错误是以你预期的方式触发的)。
答案 1 :(得分:0)
我这样想:
local w = Window.new{height=150, Area=54}
function setValues(win)
--force an error
win.x = 50
end
local status, err = pcall(setValues, w)
if err then
print('Error',err)
else
print('No errors')
end