Error handling 获得';清除';Lua中的错误消息

Error handling 获得';清除';Lua中的错误消息,error-handling,lua,Error Handling,Lua,我在很多函数中使用了error函数,并希望将错误消息传播给用户。但是,我显然不想包含错误确切发生在哪里的信息;此信息只应转到日志文件 例如,我有一个类来管理与服务器的连接。如果连接超时,它将调用 error("Connection timed out!") 然后,调用代码通过pcall捕获错误消息。但是,该消息不仅包含我传递的消息,还包含导致错误的文件名和行号: common/net/enetclient.lua:21: Connection timed out! 问题是:有没有办法只检索错

我在很多函数中使用了
error
函数,并希望将错误消息传播给用户。但是,我显然不想包含错误确切发生在哪里的信息;此信息只应转到日志文件

例如,我有一个类来管理与服务器的连接。如果连接超时,它将调用

error("Connection timed out!")
然后,调用代码通过
pcall
捕获错误消息。但是,该消息不仅包含我传递的消息,还包含导致错误的文件名和行号:

common/net/enetclient.lua:21: Connection timed out!
问题是:有没有办法只检索错误消息本身,或者我必须像下面这样手动执行此操作:

local status, msg = pcall(someFunctionThatThrowsErrors)
if not status then
    local file, msg = msg:match("(.-:%d+): (.+)")
    print("Error: " .. msg)
end

干杯,

来自以下文件:

错误(消息[,级别])
终止上次调用的受保护函数,并将
消息
作为错误消息返回。函数
错误
永远不会返回

如果消息是字符串,通常,
error
会在消息开头添加一些有关错误位置的信息。
level
参数指定如何获取错误位置。对于级别1(默认值),错误位置是调用
error
函数的位置。级别2将错误指向调用
error
的函数的位置;等等传递级别0可避免向消息中添加错误位置信息

根据第二段中的说明,将
0
级别添加到
错误
调用将产生所需的输出:

error("Connection timed out!", 0)

啊,没想到会这样。。。好吧顺便说一句:您写道,添加级别
2
将产生所需的输出,但它是级别
0
;)然而,这解决了我的问题:)非常感谢!