函数:pcall 捕获简易报错
函数名称:捕获简易报错
函数功能:捕获简易报错,执行成功返回 true,失败返回 false
函数方法
ok,err = pcall(func,a1,a2,...)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| func | function | 是 | 要执行的函数 |
| a1 | - | 否 | 需要传递的给 func 的参数 |
| 返回值 | 类型 | 说明 |
|---|---|---|
| ok | boolean | true - 执行成功,false - 执行失败 |
| err | string | ok 为 true 时返回正确内容,false 返回错误信息 |
函数示例
local function work()
error("自定义异常信息")
end
local ok, err = pcall(work)
dialog(err) -- custom error info
--示例2
local function test()
local t = 2
nLog1(t) -- 故意报错
end
local ok, err = pcall(test)
if not ok then
dialog("出错了:"..err)
end
注意事项
- 推荐使用 xpcall,xpcall 与 pcall 具体区别如下
| 特性 | pcall | xpcall |
|---|---|---|
| 错误回调函数 | 无 | 有第二个参数错误处理器 |
| 自动获取堆栈 | 不支持 | 在错误 handler 里直接拿完整栈 |
| 参数传递 | 支持 pcall(f, ...) | 支持 xpcall(f, err, ...) |
| 适用场景 | 简单容错、只需要判断成功失败 | 日志、报错上报、需要定位代码行 |
- 加密后可能无法获取到具体报错信息,推荐用于源码调试阶段。