gpt4 book ai didi

error-handling - 捕获 lua_error() 的输出?

转载 作者:行者123 更新时间:2023-12-04 06:51:44 24 4
gpt4 key购买 nike

目前我在控制台应用程序之外使用 lua,这意味着每当脚本中出现错误并且 lua_error() 被调用时,相关的文本就会被打印出来。

现在我必须将那个东西移动到一个 GUI 应用程序中,该应用程序在后台运行时没有控制台。必须将出现的错误文本提交给主应用程序,以便它能够执行任何必要的操作。作为第二点,整个应用程序不必停止(就像控制台应用程序发生的那样)。

所以我的问题是:是否有可能在代码中的某个点捕获 lua_error() 给出的错误消息以进行进一步处理并避免应用程序停止?

最佳答案

作为Lua manua我指出,您将希望使用 protected 调用来从您的应用程序执行 Lua 代码。如果您遇到来自不 protected 调用的错误,Lua 将调用一个 panic 函数,该函数将错误输出写入您想要摆脱的控制台。

特别是,lua_pcall可以提供一个自定义消息处理程序,在出现错误时调用该处理程序。您可以提供与 GUI 交互的自定义​​处理程序。

请注意,尽管消息处理程序是通过 C-longjmp 调用的,它具有 certain implications在消息处理程序中可以做什么和不能做什么。

或者,根本不提供消息处理程序,而是检查 lua_pcall 函数的返回值。如果出现错误,可以从 Lua 堆栈的顶部检索错误消息。

关于error-handling - 捕获 lua_error() 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16711797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com