在Lua中使用assert和pcall

キキジ*_*キジキ 3 lua

根据是否出现错误,pcall(function)可能会返回:

成功:true和函数的返回值[s].
失败:错误和错误.

在我的情况下,我正在调用一个函数来返回一个表,所以如果没有错误,我将从第二个返回值获取我的数据,如果出现错误,我将打印管理错误.

我怎么能用断言来做?

起初我写了这个:

local ret, data = pcall(the_function)
assert(ret, "Error: "..data)
-- use data from here on.
Run Code Online (Sandbox Code Playgroud)

问题是即使在成功的情况下也会评估断言消息,因此当调用成功时,Lua会抱怨将字符串与表连接.

这个问题是由于我想使用assert并引用错误,但避免使用类似的东西if not ret then assert(false, "...") end.

lhf*_*lhf 6

试试这个:

local ret, data = assert(pcall(the_function))
Run Code Online (Sandbox Code Playgroud)