JS常見錯(cuò)誤(Error)及處理方案詳解
1. 錯(cuò)誤的類型
Error: 所有錯(cuò)誤的父類型
錯(cuò)誤的子類型包括:
ReferenceError: 引用的變量不存在 TypeError: 數(shù)據(jù)類型不正確的錯(cuò)誤 RangeError: 數(shù)據(jù)值不在其所允許的范圍內(nèi) SyntaxError: 語(yǔ)法錯(cuò)誤常見的內(nèi)置錯(cuò)誤:
(1)ReferenceError: 引用變量不存在
console.log(a) //ReferenceError: a is not defined
(2)TypeError: 數(shù)據(jù)類型不正確
var b = {}b.xxx() //TypeError: b.xxx is not a function
(3)RangeError: 數(shù)據(jù)值不在其所允許的范圍內(nèi)
function fn(){fn()}fn() //RangeError: Maximum call stack size exceeded
(4)SyntaxError: 語(yǔ)法錯(cuò)誤
const c = '''' //SyntaxError: Unexpected string
2. 錯(cuò)誤處理
捕獲錯(cuò)誤: try ... catch
拋出錯(cuò)誤: throw error
(1)捕獲錯(cuò)誤
try { let d console.log(d.xxx)} catch (error) { //可以通過調(diào)試查看error對(duì)象的屬性(message屬性: 錯(cuò)誤相關(guān)信息;stack屬性: 函數(shù)調(diào)用棧記錄信息) console.log(error.message) //console.log(error.stack)}// 可以繼續(xù)向下執(zhí)行console.log(’出錯(cuò)之后’)
(2)拋出錯(cuò)誤
function something() { if (Date.now() % 2 === 1 ){ console.log(’當(dāng)前時(shí)間為奇數(shù),可執(zhí)行任務(wù)’) } else { throw new Error(’當(dāng)前時(shí)間為偶數(shù)無(wú)法執(zhí)行任務(wù)’) }}//情況1 直接調(diào)用something() //Error: 當(dāng)前時(shí)間為偶數(shù)無(wú)法執(zhí)行任務(wù)console.log(’something之后’) //不會(huì)繼續(xù)這句代碼(沒有對(duì)異常進(jìn)行處理)//情況2 捕獲處理異常try { something()} catch(error) { console.log(error.message)}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. HTML <!DOCTYPE> 標(biāo)簽2. 使用AJAX實(shí)現(xiàn)UTF8編碼表單提交到GBK編碼腳本無(wú)亂碼的解決方法3. 詳解盒子端CSS動(dòng)畫性能提升4. asp在iis7報(bào)錯(cuò)行號(hào)不準(zhǔn)問題的解決方法5. 告別AJAX實(shí)現(xiàn)無(wú)刷新提交表單6. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問題……7. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法8. CSS代碼檢查工具stylelint的使用方法詳解9. 三個(gè)不常見的 HTML5 實(shí)用新特性簡(jiǎn)介10. HTML中的XML數(shù)據(jù)島記錄編輯與添加
