#lua 异常处理
lua 异常处理
1、https://www.lua.org/wshop06/Belmonte.pdf
function try(f, catch_f)
local status, exception = pcall(f)
if not status then
catch_f(exception)
end
end
try(function()
-- Try block
--
end, function(e)
-- Except block. E.g.:
-- Use e for conditional catch
-- Re-raise with error(e)
end)
2、 http://www.cnblogs.com/jadeboy/p/3978661.html
-- 打印错误信息
local function __TRACKBACK__(errmsg)
local track_text = debug.traceback(tostring(errmsg), 6);
print("---------------------------------------- TRACKBACK ----------------------------------------");
print(track_text, "LUA ERROR");
print("---------------------------------------- TRACKBACK ----------------------------------------");
local exception_text = "LUA EXCEPTION\n" .. track_text;
return false;
end
--[[ 尝试调一个function 这个function可以带可变参数
如果被调用的函数有异常 返回false,退出此方法继续执行其他代码并打印出异常信息;]]
function trycall(func, ...)
local args = { ... };
return xpcall(function() func(unpack(args)) end, __TRACKBACK__);
end
--测试代码:
trycall(function(param)
print("message "..param)
print("message "..nil)
end, "test trycall")
浙公网安备 33010602011771号