91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Lua 錯誤處理

發布時間:2020-07-26 16:12:04 來源:網絡 閱讀:949 作者:liam2199 欄目:開發技術

Lua 錯誤處理

程序運行中錯誤處理是必要的,在我們進行文件操作,數據轉移及web service 調用過程中都會出現不可預期的錯誤。如果不注重錯誤信息的處理,就會照成信息泄露,程序無法運行等情況。

任何程序語言中,都需要錯誤處理。錯誤類型有:

  • 語法錯誤

  • 運行錯誤

=================================================================

錯誤處理

我們可以使用兩個函數:assert 和 error 來處理錯誤。實例如下:

assert首先檢查第一個參數,若沒問題,assert不做任何事情;否則,assert以第二個參數作為錯誤信息拋出。

error (message [, level])

功能:終止正在執行的函數,并返回message的內容作為錯誤信息(error函數永遠都不會返回)

通常情況下,error會附加一些錯誤位置的信息到message頭部。

Level參數指示獲得錯誤的位置:

  • Level=1[默認]:為調用error位置(文件+行號)

  • Level=2:指出哪個調用error的函數的函數

  • Level=0:不添加錯誤位置信息


pcall 和 xpcall、debug

Lua中處理錯誤,可以使用函數pcall(protected call)來包裝需要執行的代碼。

pcall接收一個函數和要傳遞個后者的參數,并執行,執行結果:有錯誤、無錯誤;返回值true或者或false, errorinfo。

語法格式如下

if pcall(function_name, ….) then-- 沒有錯誤else-- 一些錯誤end

pcall以一種"保護模式"來調用第一個參數,因此pcall可以捕獲函數執行中的任何錯誤。

通常在錯誤發生時,希望落得更多的調試信息,而不只是發生錯誤的位置。但pcall返回時,它已經銷毀了調用桟的部分內容。

Lua提供了xpcall函數,xpcall接收第二個參數——一個錯誤處理函數,當錯誤發生時,Lua會在調用桟展看(unwind)前調用錯誤處理函數,于是就可以在這個函數中使用debug庫來獲取關于錯誤的額外信息了。

debug庫提供了兩個通用的錯誤處理函數:


  • debug.debug:提供一個Lua提示符,讓用戶來價差錯誤的原因

  • debug.traceback:根據調用桟來構建一個擴展的錯誤消息

>=xpcall(function(i) print(i) error('error..') end, function() print(debug.traceback()) end, 33) 33 stack traceback: stdin:1: in function ''&nbsp123''


function myfunction()
	n = n/nil
end

function myerrhandler(err)
	print("ERROR", err)
end

status = xpcall(myfunction, myerrhandler)
print(status)


Lua 錯誤處理

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘西| 潢川县| 余干县| 呼图壁县| 建宁县| 乌苏市| 申扎县| 正阳县| 涡阳县| 恭城| 兴城市| 比如县| 承德市| 怀集县| 庆阳市| 拜泉县| 瑞安市| 胶州市| 瑞昌市| 西林县| 金阳县| 安西县| 罗甸县| 衡阳市| 固原市| 广州市| 洞口县| 通辽市| 蒙自县| 虞城县| 上虞市| 岫岩| 上栗县| 银川市| 云和县| 巴楚县| 漯河市| 中超| 泰州市| 清远市| 延川县|