目录

  1. 编译
  2. 错误

You must try your best. Then you will have a good improvement.

编译

dofile函数,加载文件并且执行文件中的代码。其实dofile并不是运行lua代码的核心,核心是loadfile函数。

1
2
3
4
function dofile(filename)
	local f = assert(loadfile(filename))
	return f()
end

如果loadfile执行失败,那么函数assert会引发一个错误。相较于dofile,loadfile在发生错的时候会返回nil以及错误信息。而且在多次运行这个文件的时候,loadfile只需要加载一次后面可以多次调用。

函数load函数和loadfile函数非常的相似,但是加载的不是文件而是字符串。函数load总是在全局环境中编译代码片段,所以里面的值也都是针对于全局变量的。

错误

可以通过assert函数来判断一个函数是否成功执行,没有成功执行则会返回错误信息。assert函数第二个参数为可选的错误信息,可以输出你想要输出的错误信息。 通过assert函数抛出错误信息可以让函数继续执行。

如果想要在lua代码中处理错误,那么就应该使用函数pcall来封装代码。

1
2
3
4
5
6
local ok, msg = pcall(functionname)
if ok then
	regular code
else
	error-handling code
end

函数pcall会以一种保护模式来调用它的第一个参数,以便来捕捉该函数执行中的错误。无论是否发生错误pcall都不会引发错误。

            <hr style="visibility: hidden;"/>
            
            <hr style="visibility: hidden;"/>