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]: ?