最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2014年09月23日 10:49:24   投稿:junjie  
這篇文章主要介紹了Lua中的異常處理pcall、xpcall、debug使用實例,這3個函數(shù)是Lua中的異常處理必須用到的,需要的朋友可以參考下

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

pcall接收一個函數(shù)和要傳遞個后者的參數(shù),并執(zhí)行,執(zhí)行結果:有錯誤、無錯誤;返回值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以一種"保護模式"來調用第一個參數(shù),因此pcall可以捕獲函數(shù)執(zhí)行中的任何錯誤。

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

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

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

相關文章

最新評論

色达县| 宿松县| 清原| 滦平县| 钦州市| 迭部县| 鄯善县| 芒康县| 芒康县| 鸡东县| 察雅县| 黄浦区| 牟定县| 通山县| 霍城县| 郎溪县| 青河县| 绥中县| 慈利县| 咸阳市| 沂南县| 晋中市| 曲阳县| 武强县| 衢州市| 克山县| 浦江县| 大名县| 区。| 晋城| 怀仁县| 论坛| 普兰县| 林周县| 耒阳市| 林甸县| 涞水县| 洱源县| 安国市| 沁源县| 峨眉山市|