我设法通过修改dbg_printf方法来更改错误消息的输出。但是,该方法不处理以下错误消息:
lua: ?:0: attempt to call global 'log' (a nil value)
哪种方法可以处理这些类型的错误?
错误消息来自函数luaG_typeerror
中ldebug.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