我设法通过修改dbg_printf方法来更改错误消息的输出。但是,该方法不处理以下错误消息:
lua:?:0:尝试调用全局’log’(没有…
它应该比挖掘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
错误消息来自文件 ldebug.c 在功能中 luaG_typeerror 。但我猜你使用的是较旧的Lua版本,因为我的消息有点不同:
ldebug.c
luaG_typeerror
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