在__newindex调用源头报告错误,而非内部处理?

2026-04-01 20:461阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计284个文字,预计阅读时间需要2分钟。

在__newindex调用源头报告错误,而非内部处理?

我有以下metatable与__newindex函数:lua__newindex=function(t, key, value) set_value(t.sprite_number, key, value)end这允许我在我的Lua对象上设置属性(有一个相应的__index函数,但它并不真正地设置)。

我有一个metatable与以下__newindex函数:

__newindex = function(t, key, value) set_value(t.sprite_number, key, value) end

这让我允许用户在我的lua对象上设置“属性”(有一个相应的__index函数,但它并不真正相关).

set_value是一个C函数.如果你试图在“属性”上设置错误的类型,比如在整数属性上设置字符串值,则C代码会这样做

luaL_error (l, "property must be a number");

这工作正常,除了从lua报告的错误

在__newindex调用源头报告错误,而非内部处理?

[string "-- init.lua..."]:10: property must be a number

这是指我的__newindex函数中的set_value函数调用.这不是很有帮助.我希望错误指向设置了错误值的位置,即在你所在的位置

object.property = "expects integer"

我能以某种方式完成这个吗?

您可以使用 error函数并给出level参数:

__newindex = function(t, key, value) local ok, err = pcall(set_value, t.sprite_number, key, 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

标签:源处报告

本文共计284个文字,预计阅读时间需要2分钟。

在__newindex调用源头报告错误,而非内部处理?

我有以下metatable与__newindex函数:lua__newindex=function(t, key, value) set_value(t.sprite_number, key, value)end这允许我在我的Lua对象上设置属性(有一个相应的__index函数,但它并不真正地设置)。

我有一个metatable与以下__newindex函数:

__newindex = function(t, key, value) set_value(t.sprite_number, key, value) end

这让我允许用户在我的lua对象上设置“属性”(有一个相应的__index函数,但它并不真正相关).

set_value是一个C函数.如果你试图在“属性”上设置错误的类型,比如在整数属性上设置字符串值,则C代码会这样做

luaL_error (l, "property must be a number");

这工作正常,除了从lua报告的错误

在__newindex调用源头报告错误,而非内部处理?

[string "-- init.lua..."]:10: property must be a number

这是指我的__newindex函数中的set_value函数调用.这不是很有帮助.我希望错误指向设置了错误值的位置,即在你所在的位置

object.property = "expects integer"

我能以某种方式完成这个吗?

您可以使用 error函数并给出level参数:

__newindex = function(t, key, value) local ok, err = pcall(set_value, t.sprite_number, key, 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

标签:源处报告