產生錯誤.jpg
前言
今天來看一個拋出錯誤的函數,不是函數出錯了,而是這個函數就是用來拋出錯誤的,具體的是用方法就是在不允許出現錯誤的地方做判斷,如果出錯了拋出這個錯誤,禁止程序繼續進行。
內容
error()
- 原型:error(message [, level])
- 解釋:終止程序最后的保護函數,并且返回參數
message
所代表的字符串作為出錯信息,函數本身沒有返回值。一般函數error()
會在錯誤信息的開頭添加一些關于錯誤位置的信息,參數level
指定了怎樣獲得錯誤的位置。這個參數默認為1,表示錯誤位置是error()
函數被調用的地方。當參數level = 2
時表示錯誤位置在調用error()
函數的函數被調用的地方,依次類推。通過將參數level
設置為0可以避免在錯誤信息中添加額外的位置信息。
usage
- 首先我們新建一個文件將文件命名為errortest.lua然后編寫代碼如下:
-- 模擬錯誤消息
-- 第一測試
function print_message(str)
if str == nil then
error("prompt a error message, output message is nil", 0)
end
print("Lua output : "..str)
end
-- 正常調用
print_message("the ret is right!")
-- 錯誤調用
print_message()
-- 第二組測試
function print_error(type)
error("prompt a error message", type)
end
print_error(1)
-- 第三組測試
print_error(2)
- 運行結果
base_error.png
總結
- 注意參數
level
的使用,設置為0時可以避免錯誤信息中出現有關錯誤位置描述。 - 參數
level
表示對函數error()
調用的層級,數字越大表示調用的層級越深,類似于堆棧深度。 - 今天的例子不能一起執行,當運行一組示例時,請將其他
error()
函數的調用注釋掉。 - 第一組示例函數
error()
一種常見的使用方法,為了怕后邊的操作符..
與nil
連接,所以提前拋出確定的錯誤信息。 - 由第二組和第三組信息對比可以發現參數
level
的作用,注意錯誤信息中顯示的出錯的行數,其實就是顯示不同調用層級的位置。