JS常見錯(cuò)誤(Error)及處理方案詳解
1. 錯(cuò)誤的類型
Error: 所有錯(cuò)誤的父類型
錯(cuò)誤的子類型包括:
- ReferenceError: 引用的變量不存在
- TypeError: 數(shù)據(jù)類型不正確的錯(cuò)誤
- RangeError: 數(shù)據(jù)值不在其所允許的范圍內(nèi)
- SyntaxError: 語法錯(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: 語法錯(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ù)無法執(zhí)行任務(wù)') } } //情況1 直接調(diào)用 something() //Error: 當(dāng)前時(shí)間為偶數(shù)無法執(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í)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js toFixed()方法的重寫實(shí)現(xiàn)精度的統(tǒng)一
凡用過js 中的toFix() 方法的, 應(yīng)該都知道這個(gè)方法存在一個(gè)小小的BUG,在IE 下和FF 下對(duì)于小數(shù)的進(jìn)位有點(diǎn)不同2014-03-03JavaScript字符串轉(zhuǎn)數(shù)字的簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于JavaScript字符串轉(zhuǎn)數(shù)字的簡(jiǎn)單實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11基于Cesium實(shí)現(xiàn)衛(wèi)星在軌繞行動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了如何利用Cesium實(shí)現(xiàn)衛(wèi)星在軌繞行動(dòng)畫,文中的示例代碼講解詳細(xì),對(duì)我們了解Cesium有一定的幫助,感興趣的可以嘗試一下2022-06-06JavaScript事件冒泡機(jī)制原理實(shí)例解析
這篇文章主要介紹了JavaScript事件冒泡機(jī)制原理實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01JavaScript Tips 使用DocumentFragment加快DOM渲染速度
大家在開發(fā)JavaScript應(yīng)用的時(shí)候,如果遇到這種大量節(jié)點(diǎn)的情況,不妨將DocumentFragment作為一個(gè)備選的方案。2010-06-06js老生常談之this,constructor ,prototype全面解析
下面小編就為大家?guī)硪黄猨s老生常談之this,constructor ,prototype。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-04-04JavaScript Event學(xué)習(xí)第八章 事件的順序
在第一章中我提到一個(gè)初次看起來可能不是那么好理解的是一個(gè)問題:“如果一個(gè)元素和他的父元素對(duì)于同樣的事件都有事件處理程序,那么哪個(gè)會(huì)首先執(zhí)行呢?”毫無疑問,看是什么瀏覽器。2010-02-02