Roblox 2009 Lua:获取 Loadstring 的错误
Roblox 2009 Lua: Get Loadstring's error
我制作 2009 脚本生成器已经几个小时了,但我不知道如何让它打印错误。如果我这样做 print(loadstring("a"))
,它会打印到 roblox 输出 nil [string "s"]:1: '=' expected near '<eof>'
,== nil。我想得到的是它最后报的错误: '=' expected near '<eof>'
,类型type为nil,所以我不知道如何得到它。如果有人可以提供帮助,将不胜感激!
请参阅 Lua 5.1 手册,它将指向 load
的文档:
If there [are] errors, ... returns nil plus the error message.
通常 Lua 到 return 错误消息作为第二个 return 值:
local f, err = loadstring(mycode)
if not f then
print("There was an error: `" .. err .. "`")
end
此 err
以 开头,其中 发生了错误,它无益地引用了 loadstring
.
的输入
例如输入代码"hello there"
,错误为
[string "hello there"]:1: '=' expected near 'there'
Lua 似乎在第一个换行符或 63 个字符处截断引号,以较小者为准:
对于"hello\there"
,错误是
[string "hello..."]:2: '=' expected near 'there'
对于"helloooooooooooooooooooooooooooooooooooooooooooooooooooooo there"
,错误是
[string "helloooooooooooooooooooooooooooooooooooooooooooooooooooooo ther..."]:1: '=' expected near 'there'
如果您确定脚本的前 63 characters/first 行中没有 "]:
,您可以搜索该序列以找到它停止的位置:
local location, message = err:match('^(%[string ".*"%]:%d+:%s+)(.*)$')
例如,如果您的代码是 "hello\"]:1: there"
,您可能想要解决这个问题。
解决它的最简单方法是让用户控制远离引用的第一行:在代码前面加上你自己的第一行,这很好(如果出现错误,请确保调整错误的行号您将其显示给用户:)
local f, err = loadstring("--code\n" .. mycode)
print(err)
现在错误消息应该总是开始
[string "--code..."]:
我制作 2009 脚本生成器已经几个小时了,但我不知道如何让它打印错误。如果我这样做 print(loadstring("a"))
,它会打印到 roblox 输出 nil [string "s"]:1: '=' expected near '<eof>'
,== nil。我想得到的是它最后报的错误: '=' expected near '<eof>'
,类型type为nil,所以我不知道如何得到它。如果有人可以提供帮助,将不胜感激!
请参阅 Lua 5.1 手册,它将指向 load
的文档:
If there [are] errors, ... returns nil plus the error message.
通常 Lua 到 return 错误消息作为第二个 return 值:
local f, err = loadstring(mycode)
if not f then
print("There was an error: `" .. err .. "`")
end
此 err
以 开头,其中 发生了错误,它无益地引用了 loadstring
.
例如输入代码"hello there"
,错误为
[string "hello there"]:1: '=' expected near 'there'
Lua 似乎在第一个换行符或 63 个字符处截断引号,以较小者为准:
对于"hello\there"
,错误是
[string "hello..."]:2: '=' expected near 'there'
对于"helloooooooooooooooooooooooooooooooooooooooooooooooooooooo there"
,错误是
[string "helloooooooooooooooooooooooooooooooooooooooooooooooooooooo ther..."]:1: '=' expected near 'there'
如果您确定脚本的前 63 characters/first 行中没有 "]:
,您可以搜索该序列以找到它停止的位置:
local location, message = err:match('^(%[string ".*"%]:%d+:%s+)(.*)$')
例如,如果您的代码是 "hello\"]:1: there"
,您可能想要解决这个问题。
解决它的最简单方法是让用户控制远离引用的第一行:在代码前面加上你自己的第一行,这很好(如果出现错误,请确保调整错误的行号您将其显示给用户:)
local f, err = loadstring("--code\n" .. mycode)
print(err)
现在错误消息应该总是开始
[string "--code..."]: