濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > Lua中的異常處理pcall、xpcall、debug使用實(shí)例

Lua中的異常處理pcall、xpcall、debug使用實(shí)例

熱門標(biāo)簽:百度地圖標(biāo)注位置網(wǎng)站 400手機(jī)電話免費(fèi)辦理 武漢百應(yīng)人工智能電銷機(jī)器人 如何利用高德地圖標(biāo)注家 智能語音電銷的機(jī)器人 開通400電話申請(qǐng)流程 上海企業(yè)外呼系統(tǒng)排名 揚(yáng)州電銷外呼系統(tǒng)軟件 電腦外呼系統(tǒng)輻射大嗎

如果需要在Lua中處理錯(cuò)誤,必須使用函數(shù)pcall(protected call)來包裝需要執(zhí)行的代碼。

pcall接收一個(gè)函數(shù)和要傳遞個(gè)后者的參數(shù),并執(zhí)行,執(zhí)行結(jié)果:有錯(cuò)誤、無錯(cuò)誤;返回值true或者或false, errorinfo

復(fù)制代碼 代碼如下:
  
if pcall(function_name, ….) then
-- no error
else
-- some error
end

簡單示例
復(fù)制代碼 代碼如下:

> =pcall(function(i) print(i) end, 33)
33
true
  
> =pcall(function(i) print(i) error('error..') end, 33)
33
false        stdin:1: error..

這里注意對(duì)返回值的邏輯判斷
復(fù)制代碼 代碼如下:

> function f() return false,2 end
> if f() then print '1' else print '0' end
0

pcall以一種"保護(hù)模式"來調(diào)用第一個(gè)參數(shù),因此pcall可以捕獲函數(shù)執(zhí)行中的任何錯(cuò)誤。

通常在錯(cuò)誤發(fā)生時(shí),希望落得更多的調(diào)試信息,而不只是發(fā)生錯(cuò)誤的位置。但pcall返回時(shí),它已經(jīng)銷毀了調(diào)用桟的部分內(nèi)容。Lua提供了xpcall函數(shù),xpcall接收第二個(gè)參數(shù)——一個(gè)錯(cuò)誤處理函數(shù),當(dāng)錯(cuò)誤發(fā)生時(shí),Lua會(huì)在調(diào)用桟展看(unwind)前調(diào)用錯(cuò)誤處理函數(shù),于是就可以在這個(gè)函數(shù)中使用debug庫來獲取關(guān)于錯(cuò)誤的額外信息了。

debug庫提供了兩個(gè)通用的錯(cuò)誤處理函數(shù):

debug.debug:提供一個(gè)Lua提示符,讓用戶來價(jià)差錯(cuò)誤的原因
debug.traceback:根據(jù)調(diào)用桟來構(gòu)建一個(gè)擴(kuò)展的錯(cuò)誤消息

復(fù)制代碼 代碼如下:

>=xpcall(function(i) print(i) error('error..') end, function() print(debug.traceback()) end, 33)
33
stack traceback:
stdin:1: in function stdin:1>
[C]: in function 'error'
stdin:1: in function stdin:1>
[C]: in function 'xpcall'
stdin:1: in main chunk
[C]: in ?
false        nil

您可能感興趣的文章:
  • Lua中簡單的錯(cuò)誤處理實(shí)例
  • Lua函數(shù)與字符串處理簡明總結(jié)
  • Lua極簡入門指南(三): loadfile和錯(cuò)誤處理
  • Lua讀取和寫入文件處理例子
  • 淺析Lua編程中的異常處理
  • lua日志文件處理代碼

標(biāo)簽:嘉峪關(guān) 江西 武漢 張掖 黑龍江 宜賓 延邊 新余

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua中的異常處理pcall、xpcall、debug使用實(shí)例》,本文關(guān)鍵詞  Lua,中的,異常,處理,pcall,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua中的異常處理pcall、xpcall、debug使用實(shí)例》相關(guān)的同類信息!
  • 本頁收集關(guān)于Lua中的異常處理pcall、xpcall、debug使用實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    江山市| 和顺县| 宁国市| 长治市| 互助| 皮山县| 临洮县| 奇台县| 琼结县| 缙云县| 东丰县| 怀安县| 和静县| 镇江市| 岚皋县| 杨浦区| 四会市| 射阳县| 小金县| 青州市| 阿拉尔市| 桂林市| 神池县| 巴林左旗| 贺州市| 沙河市| 宣城市| 星子县| 通江县| 蒲城县| 兴安县| 汝州市| 新疆| 卢氏县| 临城县| 凉城县| 托克逊县| 惠东县| 酒泉市| 阳朔县| 玛曲县|