未定义的自定义库引用的错误消息

我正在为嵌入式系统编写 Lua 库的 C 代码。如果脚本编写人员尝试调用库中未定义的库函数,是否有一种方法抛出有意义的错误?

当前,如果(例如)脚本存在拼写错误,其中 ez.RS232opn() 被调用而不是正确的 ez.RS232open() 函数,

Lua 会抛出一个含糊不清的错误“尝试调用空值”

在我的库中,我想抛出这样的错误:“无效的 ez 库函数名称:RS232opn”

我确实明白为什么会抛出这个含糊不清的错误(因为库实际上是一个表),但这对于我们的开发人员来说并没有太大的意义,他们还比较新手。

如果我漏掉了什么,请原谅,但我查阅了 Lua 文档、stackoverflow 和 Google,但没有找到任何线索。

这是可能的吗?

点赞
用户8623770
用户8623770

你可以使用正则表达式来自定义错误消息以处理错误的函数调用。在 Lua 中,这种正则表达式被称为模式。可以使用模式来搜索以()结尾的nil值函数调用,并返回其不合法。

Lua.org Patterns page https://www.lua.org/pil/20.2.html

2020-09-14 04:48:45
用户2858170
用户2858170

在 Lua 中不允许调用空值,因为这没有任何意义。

Lua 会抛出一条加密错误“尝试调用空值”

通常会有一个行号、名称以及它是局部还是全局范围的信息。这就是你所需要的全部信息。

对于那些相对较新的 Lua 开发者而言,这个消息可能并没有太多意义。

这个消息应该对于任何阅读过 Lua 手册并且花了大约一个小时编程 Lua 的人来说都应该是有意义的。它相当容易理解。

自动补全可以帮助避免 API 中的拼写错误。

你可以使用元方法来编写一些不太美观但是不必要的内容。只有一小部分错误消息。任何 Lua 开发者都必须熟知它们。那么为什么要用另一段文本来代替它们呢?

你的

“无效的 ez 库函数名称:RS232opn”

包含的信息比 Lua 的

input: 245 尝试调用空值(字段 'RS232opn')

要少。

btw (by the way)。

2020-09-14 06:41:02