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來查詢錯誤時的棧調用狀況。