中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

發布時間:2021-09-30 14:10:36 來源:億速云 閱讀:121 作者:柒染 欄目:系統運維

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

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

Error

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

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

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

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

SyntaxError -  語法錯誤

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

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

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

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

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

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

因此 SyntaxError 應該和其他類型的異常區分開,此類異常發生在  JavaScript解析/編譯時,此類異常一旦發生,導致整個js文件都無法執行,而其他異常發生在代碼運行時,這一類的錯誤會導致在錯誤出現的那一行之后的代碼無法執行,但在那一行之前的代碼不會受到影響。

TypeError - 類型錯誤

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

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

ReferenceError -  引用錯誤

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

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

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

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

RangeError - 邊界錯誤

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

  • 數組長度為負數或超長

  • 數字類型的方法參數超出預定義范圍

  • 函數堆棧調用超過最大值

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

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

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

自定義異常

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

萨嘎县| 明光市| 马尔康县| 白城市| 思茅市| 三门峡市| 平潭县| 延安市| 吉首市| 萨迦县| 蛟河市| 孝昌县| 水富县| 察雅县| 孟连| 虎林市| 诸暨市| 黎川县| 湛江市| 康定县| 昭觉县| 大关县| 铜梁县| 湘潭市| 灵璧县| 巴林右旗| 肥乡县| 镇沅| 九寨沟县| 东莞市| 泰兴市| 积石山| 彰化市| 孝感市| 高清| 汝阳县| 永昌县| 犍为县| 基隆市| 青阳县| 蓝山县|