如何打印出错误信息?
2020-10-8 20:4:41
收藏:0
阅读:148
评论:2
在名为 Roblox studio 的软件中,我需要帮助编写脚本,使得在游戏中出现错误时,能够使用普通的打印功能再次输出错误信息,就像这个示例一样:
Local error = —-不管发生了什么错误
Print(error) —- 然后简单地将其打印出来
点赞
用户2860267
Roblox提供了几种不同的方式来跟踪脚本和本地脚本中抛出错误的情况。
如果您想在本地脚本中观察错误,并且您知道特定的代码块可能会抛出错误,您可以使用pcall()作为try-catch块。
local success, result = pcall(function()
error("this is a test error message")
end)
if not success then
print("An error was thrown!")
print(result) --"this is a test error message"
end
如果您想在所有脚本中观察错误,可以将回调附加到ScriptContext.Error信号。该信号在抛出任何错误时触发。它提供有关错误的信息,包括消息、调用堆栈和抛出错误的脚本的引用。
警告:ScriptContext.Error仅在注册它的脚本的上下文中触发。脚本只会观察服务器脚本中抛出的错误,在LocalScript中注册只会观察客户端抛出的错误。
local ScriptContext = game:GetService("ScriptContext")
ScriptContext.Error:Connect( function(message, stack, context)
print("An error was thrown!")
print("Message : ", message)
print("Stack : ", stack)
print("Context :", context:GetFullName())
end)
类似地,如果您只关心错误消息本身,您也可以观察它们被打印到输出窗口,使用LogService.MessageOut信号。该信号在输出任何内容时触发。包括消息、警告和错误。
local LogService = game:GetService("LogService")
LogService.MessageOut:Connect( function(message, messageType)
if messageType == Enum.MessageType.MessageError then
print("An error was thrown!")
print(message)
end
end)
2020-10-08 22:35:20
评论区的留言会收到邮件通知哦~
推荐文章
- 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 代码?

使用
io库中的 stderr 流来打印调试信息。-- 基于 print 定义调试函数 function debug(...) io.stderr:write(table.concat({...}, '\9') .. '\n') end -- Debug 函数和普通的 “print()” 函数一样, 但它会写入到 stderr 流而不是 stdout 流 debug('[filename.lua]', 'debug')使用 "error()" 函数来打印错误信息。
if true then error("It should not be true!") end如果想要从函数中捕获错误,使用
xpcall()。-- 定义 debug 函数 function debug(...) io.stderr:write(table.concat({...}, '\9') .. '\n') end xpcall( function() local b = {} -- 由于无法引用 nil 值,该语句将抛出错误 print(a.b) end, function(err) debug('[xpcall]', err) end )xpcall()在出现错误时不会停止执行,因此只需在运行时捕捉任何意外错误时将代码封装在其中即可。