#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")

3、http://nanxiao.me/lua-note-22-error-and-assert/

posted on 2017-04-07 19:43  ZhYQ_note  阅读(726)  评论(0)    收藏  举报

导航