pcall

博客展示了Lua代码及其运行结果,运行结果出现'unknown'错误,给出了错误所在文件的行号及堆栈跟踪信息,如在'pcall.lua'的第12行等。

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

lua代码

--[[
pcall出现原因
程序执行过程中可能会抛出异常,如果这个错误需要应用自己处理,
使用pcall函数,避免抛出异常栈。

pcall
正常执行:返回true和被执行函数的返回值
异常执行:返回nil和错误信息。错误信息不一定是一个字符串
]]

function bar()
	error("unknown")
end

function foo()
	--these two kinds of creating table are both ok
    --error({['code'] = 0, ['message'] = "unknown"})
	error({code = 0, message = "unknown"})
end


--[[
err can not only be string, it can be table or something else
]]
local ok, err = pcall(foo)
if not ok then
	print(err.code, err.message)
end


--[[
compare using pcall with not using pcall
]]
--use pcall
local ok, err = pcall(bar)
if not ok then
	print(err)
end

--not use pcall, it will show stack traceback
bar()

运行结果

0    unknown
pcall.lua:12: unknown
lua: pcall.lua:12: unknown
stack traceback:
    [C]: in function 'error'
    pcall.lua:12: in function 'boo'
    pcall.lua:41: in main chunk
    [C]: ?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值