前言
今天來看一個(gè)拋出錯(cuò)誤的函數(shù)砸王,不是函數(shù)出錯(cuò)了推盛,而是這個(gè)函數(shù)就是用來拋出錯(cuò)誤的,具體的是用方法就是在不允許出現(xiàn)錯(cuò)誤的地方做判斷谦铃,如果出錯(cuò)了拋出這個(gè)錯(cuò)誤耘成,禁止程序繼續(xù)進(jìn)行。
內(nèi)容
error()
- 原型:error(message [, level])
- 解釋:終止程序最后的保護(hù)函數(shù)驹闰,并且返回參數(shù)
message
所代表的字符串作為出錯(cuò)信息瘪菌,函數(shù)本身沒有返回值。一般函數(shù)error()
會(huì)在錯(cuò)誤信息的開頭添加一些關(guān)于錯(cuò)誤位置的信息嘹朗,參數(shù)level
指定了怎樣獲得錯(cuò)誤的位置师妙。這個(gè)參數(shù)默認(rèn)為1,表示錯(cuò)誤位置是error()
函數(shù)被調(diào)用的地方屹培。當(dāng)參數(shù)level = 2
時(shí)表示錯(cuò)誤位置在調(diào)用error()
函數(shù)的函數(shù)被調(diào)用的地方疆栏,依次類推。通過將參數(shù)level
設(shè)置為0可以避免在錯(cuò)誤信息中添加額外的位置信息惫谤。
usage
- 首先我們新建一個(gè)文件將文件命名為errortest.lua然后編寫代碼如下:
-- 模擬錯(cuò)誤消息
-- 第一測(cè)試
function print_message(str)
if str == nil then
error("prompt a error message, output message is nil", 0)
end
print("Lua output : "..str)
end
-- 正常調(diào)用
print_message("the ret is right!")
-- 錯(cuò)誤調(diào)用
print_message()
-- 第二組測(cè)試
function print_error(type)
error("prompt a error message", type)
end
print_error(1)
-- 第三組測(cè)試
print_error(2)
- 運(yùn)行結(jié)果
總結(jié)
- 注意參數(shù)
level
的使用,設(shè)置為0時(shí)可以避免錯(cuò)誤信息中出現(xiàn)有關(guān)錯(cuò)誤位置描述珠洗。 - 參數(shù)
level
表示對(duì)函數(shù)error()
調(diào)用的層級(jí)溜歪,數(shù)字越大表示調(diào)用的層級(jí)越深,類似于堆棧深度许蓖。 - 今天的例子不能一起執(zhí)行蝴猪,當(dāng)運(yùn)行一組示例時(shí),請(qǐng)將其他
error()
函數(shù)的調(diào)用注釋掉膊爪。 - 第一組示例函數(shù)
error()
一種常見的使用方法自阱,為了怕后邊的操作符..
與nil
連接,所以提前拋出確定的錯(cuò)誤信息米酬。 - 由第二組和第三組信息對(duì)比可以發(fā)現(xiàn)參數(shù)
level
的作用沛豌,注意錯(cuò)誤信息中顯示的出錯(cuò)的行數(shù),其實(shí)就是顯示不同調(diào)用層級(jí)的位置。