婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

Lua中的異常處理pcall、xpcall、debug使用實例

熱門標簽:百度地圖標注位置網站 400手機電話免費辦理 武漢百應人工智能電銷機器人 如何利用高德地圖標注家 智能語音電銷的機器人 開通400電話申請流程 上海企業外呼系統排名 揚州電銷外呼系統軟件 電腦外呼系統輻射大嗎

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

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

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

簡單示例
復制代碼 代碼如下:

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

這里注意對返回值的邏輯判斷
復制代碼 代碼如下:

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

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 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中簡單的錯誤處理實例
  • Lua函數與字符串處理簡明總結
  • Lua極簡入門指南(三): loadfile和錯誤處理
  • Lua讀取和寫入文件處理例子
  • 淺析Lua編程中的異常處理
  • lua日志文件處理代碼

標簽:嘉峪關 江西 武漢 張掖 黑龍江 宜賓 延邊 新余

巨人網絡通訊聲明:本文標題《Lua中的異常處理pcall、xpcall、debug使用實例》,本文關鍵詞  Lua,中的,異常,處理,pcall,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua中的異常處理pcall、xpcall、debug使用實例》相關的同類信息!
  • 本頁收集關于Lua中的異常處理pcall、xpcall、debug使用實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 山东| 乌兰县| 云和县| 绵阳市| 洪江市| 凤阳县| 临高县| 旌德县| 威宁| 江陵县| 田阳县| 正安县| 安化县| 浏阳市| 宁都县| 女性| 石台县| 荃湾区| 临朐县| 法库县| 昆山市| 宝清县| 大足县| 汤阴县| 乳山市| 宝丰县| 顺平县| 简阳市| 鄂尔多斯市| 永定县| 乌恰县| 常州市| 锡林浩特市| 特克斯县| 巩义市| 东乡族自治县| 广安市| 孙吴县| 樟树市| 平邑县| 怀仁县|