一、錯誤處理基本概念
- 錯誤,指程序中的非正常問題,在程序執行過程中,可能發生也可能不發生的問題,稱爲“錯誤”或者“異常”。
- 解釋器會爲每一個錯誤創建一個ERROR對象
- 若程序沒有錯誤發生,則正常執行至結束
- 發生錯誤時,不處理會終止程序的執行,處理錯誤繼續執行。
二、錯誤處理語法結構
try{
//可能拋出錯誤對象的語句
}
catch(用於接收錯誤對象的變量名){
//處理語句
}
[finally{
//不論錯誤發生與否都要執行的掃尾語句
}]
三、ES中預定義的ERROR對象(常見面試)
- ERROR 廣泛意義上的錯誤
- SyntaxError 語法錯誤
- ReferenceError 引用錯誤
- TypeError 類型錯誤
- EvalError eval()函數執行錯誤
- RangeError 範圍錯誤
- URIError URI解析錯誤
四、ERROR對象常用屬性與方法
- message 封裝異常的描述信息
- name 封裝異常的類型名稱
- stack 非標準屬性。返回錯誤或異常的代碼跟蹤信息,Firefox、chrome、IE10+支持
- toString() 返回包含相關錯誤信息的字符串
面試重點:
語句寫在finally和外面的區別:
- 如果try裏面有return,放在finally裏面會執行,放在外面不會執行。
五、舉例說明ERROR對象的使用
ATM取款程序中,錯誤處理的使用
var balance = 1000;
function withdraw() {
console.log("歡迎使用");
console.log("請插入銀行卡");
try {
var num = prompt("請輸入要取款的金額");
num = Number(num);
if(isNaN(num)) {
var e1 = new Error("輸入金額不是數字");
throw e1;
}
//捕捉其他異常
balance -= num;
console.log("取款成功,餘額:" + balance);
} catch(err) {
console.log(err.message);
} finally {
console.log("請取卡");
}
console.log("謝謝使用!");
}