您好,登錄后才能下訂單哦!
需要了解的JavaScript 異常類型有哪些,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
無論是瀏覽器控制臺還是 Node.js 的服務端,我們會在各種地方看到 JavaScript 異常,異常處理是編寫程序必備的基礎能力,在學習異常處理之前,了解 JavaScript 中的幾種異常類型是非常有必要的。
Error
Error 是最基本的錯誤類型,其他的錯誤類型都繼承自該類型。Error 對象主要有兩個重要屬性 message 和 name 分別表示錯誤信息和錯誤名稱。
程序運行過程中拋出的異常一般都有具體的類型,Error 類型一般都是開發人員自己拋出的異常。
try { throw new Error('ConardLi拋出的異常'); } catch (error) { console.log(error); }
SyntaxError - 語法錯誤
語法錯誤也稱為解析錯誤。語法錯誤在任何編程語言中都是最常見的錯誤類型,表示不符合編程語言的語法規范。
JavaScript 是一門解釋性語言,執行一段代碼時需要經歷 詞法分析 -> 語法分析 -> 語法樹 就可以開始解釋執行了:
詞法分析是將字符流(char stream)轉換為記號流(token stream)、語法分析階段會將記號流(token stream)生成抽象語法樹(AST)。
在這兩個階段,如果 Javascript引擎發現了預期之外/無法抓換的 token,或者 token 順序和預期不一致時,就會拋出 SyntaxError。
因此 SyntaxError 應該和其他類型的異常區分開,此類異常發生在 JavaScript解析/編譯時,此類異常一旦發生,導致整個js文件都無法執行,而其他異常發生在代碼運行時,這一類的錯誤會導致在錯誤出現的那一行之后的代碼無法執行,但在那一行之前的代碼不會受到影響。
TypeError - 類型錯誤
運行時最常見的異常,表示變量或參數不是預期類型,比如 new 關鍵字后面必須為構造函數、()前必須為函數。
ReferenceError - 引用錯誤
引用一個不存在的變量時發生的錯誤,每當我們創建或定義一個變量時,變量名稱都會寫入一個變量存儲中心中。這個變量存儲中心就像鍵值存儲一樣,每當我們引用變量時,它都去存儲中找到 Key 并提取并返回 Value,如果我們要找的變量不在存儲中,就會拋出 ReferenceError。
請注意,如果我們調用的是一個已經存在的變量的一個不存在的屬性,則不會拋出 ReferenceError,因為變量本身已經在存儲中了,調用它不存在的屬性只會是未定義狀態,也就是 undefined:
RangeError - 邊界錯誤
表示超出有效范圍時發生的異常,主要的有以下幾種情況:
數組長度為負數或超長
數字類型的方法參數超出預定義范圍
函數堆棧調用超過最大值
URIError - URL 錯誤在調用 URI 相關的方法中 URL 無效時拋出的異常,主要包括 encodeURI、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()幾個函數:
自定義異常
另外,為了滿足各種各樣的業務需求,除了 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 '參數錯誤'; } }
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。