lua的基本函式庫(內建函式庫,不用載入即使用)包含一些針對錯誤和異常的處理功能。
一、顯式拋錯誤或異常功能函式:
1、error (message [, level])
功能:終止正在執行的函式,並返回message的內容作為錯誤資訊(error函式永遠都不會返回)
通常情況下,error會附加一些錯誤位置的資訊到message頭部.
level引數指示獲得錯誤的位置,
level=1[預設]:為呼叫error位置(檔案+行號)
level=2:指出哪個呼叫error的函式的函式
level=0:不新增錯誤位置資訊
注:當前函式塊以及呼叫者也會中斷執行。
2、assert (v [, message])
功能:相當於c的斷言,
引數:v:當表示式v為nil或false將觸發錯誤,
message:發生錯誤時返回的資訊,預設為"assertion failed!"
注:當前函式塊以及呼叫者也會中斷執行。
二、異常捕獲功能函式:
1、pcall (f, arg1, ···)
功能:在保護模式下呼叫函式(即發生的錯誤將不會反射給呼叫者)
當呼叫函式成功能返回true,失敗時將返回false加錯誤資訊
2、xpcall (f, err)
功能:與pcall類似,在保護模式下呼叫函式(即發生的錯誤將不會反射給呼叫者)
但可指定乙個新的錯誤處理函式控制代碼
當呼叫函式成功能返回true,失敗時將返回false加err返回的結果
示例:function mainscene:add(a,b)
assert(type(a) == "number", "a is not a number")
assert(type(b) == "number", "b is not a number")
return
endfunction mainscene:onenter()
local status,result = pcall(self.add,self,6)
if status==false then
error(result,0)
enddump(result)
end示例比較簡單,可以自行動手檢視執行結果。
錯誤與異常
錯誤 語法錯誤也稱編譯錯誤,拼寫錯誤等導致編譯器無法將源 轉換為位元組碼 邏輯錯誤是程式可以執行 本身不報錯 但執行結果不正確,需要根據結果來除錯判斷 異常沒有語法錯誤的前提下,在執行期間產生特定的錯誤 每個特定錯誤都對應到乙個異常類物件,當發生某個特定錯誤時,其對應的異常類物件的例項物件會被輸出 ...
錯誤與異常
追蹤資訊 異常型別 異常值 traceback valueerror 異常值 常用異常 attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x ioerror 輸入 輸出異常 基本上是無法開啟檔案 importerror 無法引入模組或包 基本上是路徑問題或名...
錯誤 與 異常
1.perror 函式 void perror const char message 當某個庫函式出錯時,該庫函式首先會將代表出錯的具體原因出錯 儲存到全域性變數 errno 而 perror 只是將errno 代表的錯誤報告給使用者 實際上是呼叫strerrno errno 函式 注意,當庫函式執...