學習記錄:
錯誤處理
在執(zhí)行代碼的時候會出現(xiàn)問題,他有兩種可能:
一種就是程序的邏輯有問題,執(zhí)行代碼異常,
另一種就是程序可能遇到無法預測的異常情況而報錯,例如,網(wǎng)絡連接中斷,讀取不存在的文件,沒有操作權限等。
對于第二種錯誤,我們必須處理它,并且需要給用戶進行反饋。
在javascript中,我們使用try...catch...finally進行錯誤處理。
var r1, r2, s = null;
try {
r1 = s.length; // 此處應產生錯誤
r2 = 100; // 該語句不會執(zhí)行
} catch (e) {
alert('出錯了:' + e);
} finally {
console.log('finally');
}
console.log('r1 = ' + r1); // r1應為undefined
console.log('r2 = ' + r2); // r2應為undefined
也就是說,整個執(zhí)行流程:
1.首先執(zhí)行try..;
2.執(zhí)行到語句出錯時,后續(xù)語句不再執(zhí)行,而去執(zhí)行catch(e)...代碼。
3.然后執(zhí)行finally...代碼。
錯誤類型:
Js中用Error對象表示錯誤,還有從Error派生的TypeError,ReferenceError等錯誤對象。我們一般都用Catch(e)來捕獲變量e的訪問錯誤對象。
拋出錯誤:
程序可以直接拋出一個錯誤,讓執(zhí)行直接跳轉到catch快。拋出的錯誤使用throw語句。
當我們編寫程序時,因為catch到錯誤卻什么都不干,所以我們必須編寫錯誤的處理語句。