練習一個錯誤處理的格式,用 try、catch、throw。
一個字典查詢的功能,這裡用一個陣列,實際上我們也可以接一個 API 去對照他的 key value。當我們有找到值得時候,會回傳這個值的中文,如果有沒有就會進行錯誤處理。
function checkDictionary (key) {
var words = {
'apple': "蘋果",
'banana': "香蕉",
'peach': "桃子"
}
if (words[key]) {
return words[key]
} else {
throw key
}
}
說明:
if (words[key]) 的寫法我們從 if (words[key] != null) 簡化而來,因為 null 是 falsy 物件,所以當沒有值時結果會與此判斷式寫法相等。
try {
checkDictionary("apple")
}
catch (e) {
console.log("We don\'t know this word: " + e)
}
//結果:蘋果
說明:
我們用 try 去執行一個 function ,並在裡面加入流程控制,除了正常的功能外,如有錯誤我們也用 throw 指令,直接跳往 catch 進行進一步的處理,傳遞參數可以是任何型態,由 catch 去接收。而當在 try 中直接發生錯誤,或我們沒使用 throw 時,發生錯誤都會執行 catch 裡的功能,但我們可能無法掌握錯誤的中斷之處。
try {
checkDictionary("mongo")
}
catch (e) {
console.log("We don\'t know this word: " + e)
}
//結果:We don't know this word: mongo