Lua學習筆記(9)

  今天學習第8章:編譯、運行、調試web

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來查詢錯誤時的棧調用狀況。
相關文章
相關標籤/搜索