pcall
pcall第一个参数接受一个函数,之后的都是传递给这个函数的参数。pcall以一种保护模式来调用第一个参数,如果执行过程中有错误就返回false,没错误就返回true。
local function fun()
error(111)
end
if pcall(fun) then
print(‘no error‘)
else
print(‘has error‘)
end
-- has error
pcall其实是会返回两个值,第二个就是错误信息,如果没有错误,那么第二个返回值就是nil
xpcall
pcall比pcall多接收一个参数,第二个参数接收一个错误处理函数。
local function fun()
error(111)
return ‘i am ret‘
end
local function errorHandler(err)
print(‘HAS ERROR!--->‘.. err)
end
status, ret = xpcall(fun, errorHandler)