错误处理 – 在__newindex调用的源处报告错误,而不是在__newinde
发布时间:2020-12-14 21:46:54 所属栏目:大数据 来源:网络整理
导读:我有一个metatable与以下__newindex函数: __newindex = function(t,key,value) set_value(t.sprite_number,value)end 这让我允许用户在我的lua对象上设置“属性”(有一个相应的__index函数,但它并不真正相关). set_value是一个C函数.如果你试图在“属性”上
我有一个metatable与以下__newindex函数:
__newindex = function(t,key,value) set_value(t.sprite_number,value) end 这让我允许用户在我的lua对象上设置“属性”(有一个相应的__index函数,但它并不真正相关). set_value是一个C函数.如果你试图在“属性”上设置错误的类型,比如在整数属性上设置字符串值,则C代码会这样做 luaL_error (l,"property must be a number"); 这工作正常,除了从lua报告的错误 [string "-- init.lua..."]:10: property must be a number 这是指我的__newindex函数中的set_value函数调用.这不是很有帮助.我希望错误指向设置了错误值的位置,即在你所在的位置 object.property = "expects integer" 我能以某种方式完成这个吗? 解决方法
您可以使用
error函数并给出level参数:
__newindex = function(t,value) local ok,err = pcall(set_value,t.sprite_number,value) -- level 2 means that the error will be signaled on 2nd stack frame,-- that is the line at which the key has been set if not ok then error(err,2) end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |