未定义的自定义库引用的错误消息
我正在为嵌入式系统编写 Lua 库的 C 代码。如果脚本编写人员尝试调用库中未定义的库函数,是否有一种方法抛出有意义的错误?
当前,如果(例如)脚本存在拼写错误,其中 ez.RS232opn() 被调用而不是正确的 ez.RS232open() 函数,
Lua 会抛出一个含糊不清的错误“尝试调用空值”
在我的库中,我想抛出这样的错误:“无效的 ez 库函数名称:RS232opn”
我确实明白为什么会抛出这个含糊不清的错误(因为库实际上是一个表),但这对于我们的开发人员来说并没有太大的意义,他们还比较新手。
如果我漏掉了什么,请原谅,但我查阅了 Lua 文档、stackoverflow 和 Google,但没有找到任何线索。
这是可能的吗?
在 Lua 中不允许调用空值,因为这没有任何意义。
Lua 会抛出一条加密错误“尝试调用空值”
通常会有一个行号、名称以及它是局部还是全局范围的信息。这就是你所需要的全部信息。
对于那些相对较新的 Lua 开发者而言,这个消息可能并没有太多意义。
这个消息应该对于任何阅读过 Lua 手册并且花了大约一个小时编程 Lua 的人来说都应该是有意义的。它相当容易理解。
自动补全可以帮助避免 API 中的拼写错误。
你可以使用元方法来编写一些不太美观但是不必要的内容。只有一小部分错误消息。任何 Lua 开发者都必须熟知它们。那么为什么要用另一段文本来代替它们呢?
你的
“无效的 ez 库函数名称:RS232opn”
包含的信息比 Lua 的
input: 245 尝试调用空值(字段 'RS232opn')
要少。
btw (by the way)。
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

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