溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

需要了解的JavaScript 異常類型有哪些

發(fā)布時間:2021-09-30 14:10:36 來源:億速云 閱讀:112 作者:柒染 欄目:系統(tǒng)運維

需要了解的JavaScript 異常類型有哪些,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

無論是瀏覽器控制臺還是 Node.js 的服務(wù)端,我們會在各種地方看到 JavaScript  異常,異常處理是編寫程序必備的基礎(chǔ)能力,在學(xué)習(xí)異常處理之前,了解 JavaScript 中的幾種異常類型是非常有必要的。

Error

Error 是最基本的錯誤類型,其他的錯誤類型都繼承自該類型。Error 對象主要有兩個重要屬性 message 和 name  分別表示錯誤信息和錯誤名稱。

程序運行過程中拋出的異常一般都有具體的類型,Error 類型一般都是開發(fā)人員自己拋出的異常。

try {   throw new Error('ConardLi拋出的異常'); } catch (error) {   console.log(error); }

需要了解的JavaScript 異常類型有哪些

SyntaxError -  語法錯誤

語法錯誤也稱為解析錯誤。語法錯誤在任何編程語言中都是最常見的錯誤類型,表示不符合編程語言的語法規(guī)范。

JavaScript 是一門解釋性語言,執(zhí)行一段代碼時需要經(jīng)歷 詞法分析 -> 語法分析 -> 語法樹 就可以開始解釋執(zhí)行了:

需要了解的JavaScript 異常類型有哪些

詞法分析是將字符流(char stream)轉(zhuǎn)換為記號流(token stream)、語法分析階段會將記號流(token  stream)生成抽象語法樹(AST)。

在這兩個階段,如果 Javascript引擎發(fā)現(xiàn)了預(yù)期之外/無法抓換的 token,或者 token 順序和預(yù)期不一致時,就會拋出  SyntaxError。

需要了解的JavaScript 異常類型有哪些

因此 SyntaxError 應(yīng)該和其他類型的異常區(qū)分開,此類異常發(fā)生在  JavaScript解析/編譯時,此類異常一旦發(fā)生,導(dǎo)致整個js文件都無法執(zhí)行,而其他異常發(fā)生在代碼運行時,這一類的錯誤會導(dǎo)致在錯誤出現(xiàn)的那一行之后的代碼無法執(zhí)行,但在那一行之前的代碼不會受到影響。

TypeError - 類型錯誤

運行時最常見的異常,表示變量或參數(shù)不是預(yù)期類型,比如 new 關(guān)鍵字后面必須為構(gòu)造函數(shù)、()前必須為函數(shù)。

需要了解的JavaScript 異常類型有哪些

ReferenceError -  引用錯誤

引用一個不存在的變量時發(fā)生的錯誤,每當(dāng)我們創(chuàng)建或定義一個變量時,變量名稱都會寫入一個變量存儲中心中。這個變量存儲中心就像鍵值存儲一樣,每當(dāng)我們引用變量時,它都去存儲中找到  Key 并提取并返回 Value,如果我們要找的變量不在存儲中,就會拋出 ReferenceError。

需要了解的JavaScript 異常類型有哪些

請注意,如果我們調(diào)用的是一個已經(jīng)存在的變量的一個不存在的屬性,則不會拋出  ReferenceError,因為變量本身已經(jīng)在存儲中了,調(diào)用它不存在的屬性只會是未定義狀態(tài),也就是 undefined:

需要了解的JavaScript 異常類型有哪些

RangeError - 邊界錯誤

表示超出有效范圍時發(fā)生的異常,主要的有以下幾種情況:

  • 數(shù)組長度為負(fù)數(shù)或超長

  • 數(shù)字類型的方法參數(shù)超出預(yù)定義范圍

  • 函數(shù)堆棧調(diào)用超過最大值

需要了解的JavaScript 異常類型有哪些

URIError - URL 錯誤在調(diào)用 URI 相關(guān)的方法中 URL 無效時拋出的異常,主要包括  encodeURI、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()幾個函數(shù):

需要了解的JavaScript 異常類型有哪些

自定義異常

另外,為了滿足各種各樣的業(yè)務(wù)需求,除了 JavaScript  已經(jīng)給定的異常類型,我們還可以自定義一些異常類型,比如我們要根據(jù)不同的異常類型給用戶不同的錯誤提示:

class UnAuthError extends Error { }  class ParamError extends Error { }  function controller() {   throw new UnAuthError(); }  try {   controller(); } catch (error) {   if (error instanceof UnAuthError) {     return '無權(quán)限';   }    if (error instanceof ParamError) {   return '參數(shù)錯誤';   }  }

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI