欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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:根據(jù)調用桟來構建一個擴展的錯誤消息

復制代碼 代碼如下:

>=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中調用C語言函數(shù)實例

    Lua中調用C語言函數(shù)實例

    這篇文章主要介紹了Lua中調用C語言函數(shù)實例,本文先講解了相關知識,然后給出了調用實例,需要的朋友可以參考下
    2015-04-04
  • Lua Table轉C# Dictionary的方法示例

    Lua Table轉C# Dictionary的方法示例

    這篇文章主要給大家介紹了關于Lua Table轉C# Dictionary的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-03-03
  • Lua 操作 MongoDB 數(shù)據(jù)庫實例

    Lua 操作 MongoDB 數(shù)據(jù)庫實例

    這篇文章主要介紹了Lua 操作 MongoDB 數(shù)據(jù)庫實例,本文給出了修改后的lua-mongo API和具體的操作MongoDB 數(shù)據(jù)庫代碼,需要的朋友可以參考下
    2015-03-03
  • Lua下基本的網絡編程示例

    Lua下基本的網絡編程示例

    這篇文章主要介紹了Lua下基本的網絡編程示例,包括簡單的服務器的搭建和相關web組件的介紹等,需要的朋友可以參考下
    2015-05-05
  • 把Lua函數(shù)傳遞到C/C++中實例

    把Lua函數(shù)傳遞到C/C++中實例

    這篇文章主要介紹了把Lua函數(shù)傳遞到C/C++中實例,本文先是分析了需求,然后給出解決方法,需要的朋友可以參考下
    2014-11-11
  • OpenResty中正則模式匹配的2種方法詳解

    OpenResty中正則模式匹配的2種方法詳解

    在 OpenResty 中,同時存在兩套正則表達式規(guī)范:Lua 語言的規(guī)范和 Nginx 的規(guī)范,下面這篇文章主要給大家介紹了關于OpenResty中正則模式匹配的2種方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2018-04-04
  • Lua中table里內嵌table的例子

    Lua中table里內嵌table的例子

    這篇文章主要介紹了Lua中table里內嵌table的例子,本文同時講解了如何訪問內嵌table方法的例子,需要的朋友可以參考下
    2015-04-04
  • Lua教程(十一):模塊與包詳解

    Lua教程(十一):模塊與包詳解

    這篇文章主要介紹了Lua教程(十一):模塊與包詳解,本文講解了require函數(shù)、 編寫模塊的基本方法、使用環(huán)境、module函數(shù)等內容,需要的朋友可以參考下
    2015-04-04
  • C++遍歷Lua table的方法實例

    C++遍歷Lua table的方法實例

    這篇文章主要介紹了C++遍歷Lua table的方法實例,本文給出了Lua table數(shù)據(jù)格式、C++實現(xiàn)的遍歷代碼以及輸出效果,需要的朋友可以參考下
    2015-04-04
  • Lua教程(十四):字符串庫詳解

    Lua教程(十四):字符串庫詳解

    這篇文章主要介紹了Lua教程(十四):字符串庫詳解,本文講解了基礎字符串函數(shù)、模式匹配函數(shù)、模式、捕獲(capture):、替換等內容,需要的朋友可以參考下
    2015-04-04

最新評論