偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

你需要了解的幾種 JavaScript 異常類型

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

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

Error

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

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

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

SyntaxError - 語法錯誤

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

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

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

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

 

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

TypeError - 類型錯誤

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

ReferenceError - 引用錯誤

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

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

RangeError - 邊界錯誤

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

  • 數(shù)組長度為負數(shù)或超長
  • 數(shù)字類型的方法參數(shù)超出預定義范圍
  • 函數(shù)堆棧調(diào)用超過最大值

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

自定義異常

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

  1. class UnAuthError extends Error { } 
  2.  
  3. class ParamError extends Error { } 
  4.  
  5. function controller() { 
  6.   throw new UnAuthError(); 
  7.  
  8. try { 
  9.   controller(); 
  10. } catch (error) { 
  11.   if (error instanceof UnAuthError) { 
  12.     return '無權限'; 
  13.   }  
  14.   if (error instanceof ParamError) { 
  15.   return '參數(shù)錯誤'; 
  16.   }  

 

責任編輯:趙寧寧 來源: code秘密花園
相關推薦

2020-12-09 09:30:57

前端開發(fā)技術

2022-07-29 09:17:46

JavaScriptReactJS學習

2012-06-27 09:11:47

2012-06-26 10:13:55

2011-04-01 11:16:06

hessian

2015-07-15 13:34:37

JS開發(fā)習慣

2015-09-17 09:36:46

Chrome改變

2022-02-22 23:39:15

JavaScript編程語言Web

2016-11-01 16:41:08

直通網(wǎng)線連接端口傳輸數(shù)據(jù)

2022-01-04 19:28:05

VMware云端虛擬化

2022-03-18 12:46:56

Go 語言編程語言

2021-01-26 01:03:36

云原生工具云原生

2020-09-23 13:40:01

信用卡欺詐網(wǎng)絡釣魚攻擊

2021-08-06 06:51:15

TypeScript Any 類型

2015-10-22 17:20:46

命令工具Linux

2019-07-18 12:57:21

大數(shù)據(jù)互聯(lián)網(wǎng)算法

2010-11-23 13:34:12

微軟Lync

2023-05-18 09:00:00

人工智能StarCoder編程語言

2021-03-15 08:04:08

VMware虛擬機MSC認證

2021-05-19 09:40:14

Android 12Android
點贊
收藏

51CTO技術棧公眾號