是否可以更改Lua错误消息的输出?



我设法通过修改dbg_printf方法来更改错误消息的输出。但是,该方法不处理以下错误消息:

lua: ?:0: attempt to call global 'log' (a nil value)

哪种方法可以处理这些类型的错误?

错误消息来自函数luaG_typeerrorldebug.c的文件。但我想你使用的是较旧的Lua版本,因为我的信息有点不同:

attempt to call a nil value (global 'log')

如果可以的话,您将尝试防止错误:

if type(log) == "function" then
log() 
end

或者正如@lhf所说,使用pcall:

if pcall(log) then
-- no errors while running 'log'
...
else
-- 'log' raised an error: take appropriate actions
...
end

它应该比深入研究 C API 更简单。

就像@lhf说的:

if pcal(risky) then 
print("this works")
else
print("phooey!")
end

或者,您可以停止程序并收到如下错误消息:

if pcal(risky) then 
print("this works")
else
error("your error message here")
end

最新更新