Lua base pcall()

保護模式.jpg

前言

作為苦逼的程序猿大周末的時候也必須不能忘記學習,今天我們來看一個調用其他函數的函數,這個函數其實就是給其他函數提供一個保護環境,保護程序可以不被意外終止,可以順利的執行下去,我們一起來看一下這個函數的用法吧。

內容


pcall()

  • 原型:pcall(f, arg1, ···)
  • 解釋:在一個保護模式下調用參數f指定的函數。這意味著在函數f中發生的錯誤都不會被拋出,相反,函數pcall會捕獲發生的錯誤然后返回一個錯誤狀態,函數的第一個返回值是一個表示錯誤狀態的布爾變量,當被調用函數被成功調用并且沒有錯誤時,函數返回true作為第一個返回值,并且依次返回被調用函數的所有返回值,當發生錯誤時,函數會返回一個false并且緊跟著錯誤信息。

usage

  • 首先我們新建一個文件將文件命名為pcalltest.lua然后編寫代碼如下:
-- 打印一下苦逼的程序猿時間
print("\nnow time is "..os.date())

local function add_num(num1, num2)
    return num1 + num2;
end

-- 打印函數正常調用
print("\ntest function add_num reault:")
print(pcall(add_num, 3, 5))


-- 打印可能出現問題的函數
print("\ntest function add_num reault:")
print(pcall(add_num, 3, "what"))

  • 運行結果(今天在家加班,運行環境有點問題,找了一個在線運行的湊活著看吧)
base_pcall.png

總結

  • 從結果可以看出函數第一個返回值就是一個表示函數執行狀態的布爾值。
  • 由函數兩次運行可以看出,不管被調用函數是否發生錯誤,函數都不會中斷。
  • 這個函數可以為被執行函數提供一個保護模式,保證程序不會意外終止。
  • 還有這個時間打印的其實是格林威治時間,實際上現在已經2016-09-04 22:37:56
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容