通过lua本身的元表和元方法,加上代理的思想实现。
具体如下
function errorHandle(str) print("=================LUA ERROR:=================") if str then print(str) print("--------------------------------------------") end print(debug.traceback()) print("--------------------------------------------") end function readOnly(t) local proxy = {} local mt = { __index = t, __newindex = function (t, k, v) errorHandle("attempt to update a read-only table") end } setmetatable(proxy, mt) return proxy end function mainFunc() local days = readOnly{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"} print(days[1]) days[2] = "Noday" end xpcall(mainFunc, errorHandle)