错误处理和异常
所有Lua语言的行为都是由应用程序的一次调用而触发的,这类调用通常是要求Lua语言执行一段代码。如果执行中发生了错误,那么调用会返回一个错误代码,以便应用程序采取适当的行为来处理错误。
如果要在Lua语言中处理错误,那么就应当适用函数pcall(protected call)来封装代码。假设要执行一段Lua代码并捕获执行发生的所有错误,那么首先需要将这段代码封装到一个函数中,这个函数通常是一个匿名函数。之后,通过pcall来调用这个函数
local ok, msg = pcall(function ()
some code
if unexpected_condition then error() end
some code
print(a[i])
some code
end)
if ok then
regular code
else
error-handling code
end
函数pcall会以一种保护模式来调用它的第一个参数,以便捕获该函数执行中的错误。无论是否有错误发生,函数pcall都不会引发错误。如果没有错误发生,则pcall返回true及被调用函数(作为pcall的第一个参数传入)的所有返回值;否则,返回false及错误信息。
我们可以通过函数error来抛出异常,然后用函数pcall来