Lua 錯誤處理

2021-09-03 08:40:05 字數 1236 閱讀 1764

程式執行中錯誤處理是必要的,在我們進行檔案操作,資料轉移及web service 呼叫過程中都會出現不可預期的錯誤。如果不注重錯誤資訊的處理,就會照成資訊洩露,程式無法執行等情況。

任何程式語言中,都需要錯誤處理。錯誤型別有:

我們可以使用兩個函式:assert 和 error 來處理錯誤。例項如下:

assert首先檢查第乙個引數,若沒問題,assert不做任何事情;否則,assert以第二個引數作為錯誤資訊丟擲。

error (message [, level])
功能:終止正在執行的函式,並返回message的內容作為錯誤資訊(error函式永遠都不會返回)

通常情況下,error會附加一些錯誤位置的資訊到message頭部。

level引數指示獲得錯誤的位置:

lua中處理錯誤,可以使用函式pcall(protected call)來包裝需要執行的**。

pcall接收乙個函式和要傳遞個後者的引數,並執行,執行結果:有錯誤、無錯誤;返回值true或者或false, errorinfo。

語法格式如下

if pcall(function_name, ….) then-- 沒有錯誤else-- 一些錯誤end
pcall以一種"保護模式"來呼叫第乙個引數,因此pcall可以捕獲函式執行中的任何錯誤。

通常在錯誤發生時,希望落得更多的除錯資訊,而不只是發生錯誤的位置。但pcall返回時,它已經銷毀了呼叫桟的部分內容。

lua提供了xpcall函式,xpcall接收第二個引數——乙個錯誤處理函式,當錯誤發生時,lua會在呼叫桟展看(unwind)前呼叫錯誤處理函式,於是就可以在這個函式中使用debug庫來獲取關於錯誤的額外資訊了。

debug庫提供了兩個通用的錯誤處理函式:

>=xpcall(function(i) print(i) error('error..') end, function() print(debug.traceback()) end, 33) 33 stack traceback: stdin:1: in function '' 123''

function myfunction()

n = n/nil

endfunction myerrhandler(err)

print("error", err)

endstatus = xpcall(myfunction, myerrhandler)

print(status)

MySql錯誤處理 錯誤處理的例子

有幾種錯誤處理的宣告形式 如果任何錯誤 不是 not found 設定 l error 為 1 後繼續執行 declare continue handler for sqlexception set l error 1 如果發生任何錯誤 不是 not found 執行 rollback和產生一條錯誤...

MySql錯誤處理(三) 錯誤處理的例子

mysql錯誤處理 三 錯誤處理的例子 有幾種錯誤處理的宣告形式 如果任何錯誤 不是 not found 設定 l error 為 1 後繼續執行 declare continue handler for sqlexception set l error 1 如果發生任何錯誤 不是 not foun...

PHP 錯誤處理

在 php 中,預設的錯誤處理很簡單。一條訊息會被傳送到瀏覽器,這條訊息帶有檔名 行號以及一條描述錯誤的訊息。在建立指令碼和 web 應用程式時,錯誤處理是乙個重要的部分。如果您的 缺少錯誤檢測編碼,那麼程式看上去很不專業,也為安全風險敞開了大門。本教程介紹了 php 中一些最為重要的錯誤檢測方法。...