8. Compilation, Execution, and Errors
1)Lua把每个chrunk都作为一个匿名函数来处理,如:
f = loadstring("a = 1")
相当于:
f = loadstring("function() a = 1 end")
2)require函数:
作用:加载运行库,会搜索目录加载文件,并避免重复加载。
3)c Packages:
Lua用loadlib()来达到动态链接库的作用,提供了跨平台的一致性调用方式:
local path = "/usr/local/lua/lib/libluasocket.so"
-- or path = "C:\\windows\\luasocket.dll"
local f = assert(loadlib(path, "luaopen_socket" ))
f() -- actually open the library
4)错误:
在非预期的情况出现时会抛出错误,可用assert()来获取错误内容。
5)异常处理:
(1)将可能引起异常的内容封装在一个函数中
(2)用pcall调用函数
如:
function divide(x,y) return x/y end
if pcall(divide(2,0)) then ... else... end
或者:
err = pcall(divide(2,0)) print(err)
另外,可以用xpcall和debug库中的debug和debug.traceback来查询错误时的栈调用情况。