捕获 lua_error() 的输出?
2013-5-23 10:48:22
收藏:0
阅读:143
评论:2
目前我正在使用 Lua 在控制台应用程序中,意味着每当脚本出现错误并调用 lua_error() 时,相关文本都会被打印出来。
现在我必须将这个东西移入一个在后台运行的 GUI 应用程序中,它没有控制台。出现的错误文本必须提交给主应用程序,以便它能够进行必要的操作。作为第二点,整个应用程序不能停止(就像控制台应用程序那样)。
所以我的问题是:有没有可能在代码的某个地方捕获由 lua_error() 给出的错误消息以进行进一步处理,并避免应用程序停止?
点赞
用户577603
正如 Lua 手册 所指出的那样,你应该使用受保护的调用来执行你的应用程序中的 Lua 代码。如果你遇到未经保护的调用错误,Lua 将调用一个panic函数,这将写入到你想要摆脱的控制台的错误输出。
特别地,lua_pcall 可以提供自定义的消息处理程序,在发生错误时调用。你可以提供一个与你的 GUI 交互的自定义处理程序。
但要注意的是,消息处理程序是通过 C-longjmp 调用的,从消息处理程序中可以做和不能做的事情会有一些 特定影响。
或者,根本不提供消息处理程序,而是检查lua_pcall函数的返回值。如果发生错误,则可以从Lua stack的顶部检索错误消息。
2013-05-23 10:55:36
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
lua_error本身不会产生任何输出: 是调用 Lua 的应用程序处理如何报告错误。我假设你所说的“控制台”是指你正在使用标准 Lua 命令行解释器。看起来你现在想将 Lua 嵌入到你的应用程序中。在这种情况下,你可以使用
lua_pcall运行 Lua 脚本并检查其返回值,处理任何可能发生的错误。