Lua中assert( )函數的使用


當Lua遇到不期望的情況時就會拋出錯誤,比如:兩個非數字進行相加;調用一個非函數的變量;訪問表中不存在的值等。你也可以通過調用error函數顯示的拋出錯誤,error的參數是要拋出的錯誤信息。
assert(a,b) a是要檢查是否有錯誤的一個參數,b是a錯誤時拋出的信息。第二個參數b是可選的。
  • 1
  • 2
  • 3
print("enter a number:") n = io.read("*number") if not n then error("invalid input") end
  • 1
  • 2
  • 3
  • 4
  • 5

Lua提供了專門的內置函數assert( )來完成上述的類似功能

print("enter a number:") n = assert(io.read("*number"), "invalid input")
  • 1
  • 2

assert首先檢查的是第一個參數是否返回錯誤,如果不返回錯誤,則assert簡單返回,否則則以第二個參數拋出異常信息。 
assert()是普通函數,他首先計算兩個參數,然后在調用函數,如:

n = io.read() assert(tonumber(n), "invalid input:" .. n .. "is not a number")
  • 1
  • 2

先進行tonumber(n), "invalid input:" .. n .. "is not a number"這兩個參數的計算。

沒用assert( )時:

input = io.read("*number") print(input)
  • 1
  • 2

運行結果:

nil [Finished in 0.3s]
  • 1
  • 2

用assert( )時:

input = assert(io.read("*number")) print(input)
  • 1
  • 2

運行結果:

lua: D:\UserProfiles\BenLuo\Desktop\study\test.lua:44: assertion failed! stack traceback: [C]: in function 'assert' D:\UserProfiles\BenLuo\Desktop\study\test.lua:44: in main chunk [C]: ? [Finished in 0.3s with exit code 1]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM