Lua 异常捕获

Lua中的异常处理主要通过pcall和xpcall实现。pcall在出错时只返回错误信息,而xpcall允许设置自定义错误处理函数,提供更详细的错误堆栈信息。当主函数执行成功时,两者返回结果相同;出错时,xpcall能提供更丰富的调试信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值