函数:xpcall 捕获处理报错
函数名称:捕获处理报错
函数功能:捕获错误并调用自定义错误处理函数,执行成功返回 true,失败返回 false
函数方法
ok,err = xpcall(func, errorhand,a1,a2,...)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| func | function | 是 | 要执行的函数 |
| errorhand | function | 是 | 错误处理函数 |
| a1 | - | 否 | 需要传递的给 func 的参数 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | true - 执行成功,false - 执行失败 |
| err | string | ok 为 true 时返回正确内容,false 返回错误信息 |
函数示例
--示例1
local function err_handle(msg)
return msg -- 返回错误信息给 xpcall
end
local function test()
local a = nil
dialog(a.b) -- 故意报错:attempt to index global 'a' (a nil value)
end
-- 执行
local ok, err = xpcall(test, err_handle)
if not ok then
dialog("执行失败,错误:"..err)
end
--示例2
local function err_handle(msg)
return msg -- 返回错误信息给 xpcall
end
local function add(x, y)
return x + y
end
local ok, err = xpcall(add, err_handle, nil, 20)--x 为 nil
if ok then
dialog("执行成功:"..err)
else
dialog("执行失败,错误:".. err)
end
注意事项
- 加密后可能无法获取到具体报错信息,推荐用于源码调试阶段。