Lua 异常处理,Lua异常处理有 pcall 和 xpcall ,两个接口都能终止主函数的执行,区别是 xpcall 可以放进一个错误处理函数,当xpcall执行主函数出错时,通过错误处理函数将出错的详细信息打印出来。简单的说 pcall 只是终止了主函数的执行,没有打印出错的详细信息,xpcall 不仅可以终止主函数的执行,还能通过指定的错误接口来处理出错的信息。
A、下面是pcall调用主函数没有出错的情况:
function sum(a,b)
local c=a+b
print(c)
return c
end
local status,ret_info = pcall(sum,1,2)
print('status=',status,'ret_info=',ret_info)
输出是 :
3
status= true ret_info= 3
B、下面是pcall调用主函数出错的情况:
function sum(a,b)
local c=a+b+'d'
print(c)
return c
end
local status,ret_info = pcall(sum,1,2)
print('status=',status,'ret_info=',ret_info)
输出是:
status= false ret_info= input:2: attempt to perform arithmetic on a string value
总结pcall可以看出,当执行主函数没出错的时候,status为true,ret_info 就是主函数的返回值,当执行主函数出错的时候,
status为false,ret_info 就是出错的简略信息。
C、下面是xpcall调用主函数没有出错的情况:
function sum(a,b)
local c=a + b
print(c)
return c
end
local status,ret_info = xpcall(sum