2017-04-06 14 views
1

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

https://www.lua.org/manual/5.3/manual.html#2.3ともhttps://www.lua.org/manual/ 5.3/manual.html#2.4あなたが投稿したコードはそのようには動作しません。 wはnilなので、索引付けすることはできません.Windowのどこでもmetatableを設定しませんでした。 – Piglet

答えて

2

Luaはのtry/catchブロックを持っていますが、(オプションのパラメータと一緒に)そのパラメータとしての機能を受け取り、中にキャッチ/レポート実行時エラーpcall機能を提供していません感謝その機能。

このように、if not pcall(function() w.x = 50 end) then ... endのようなものがあります(エラーが発生したと想定した場合)。

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 
関連する問題