成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

Error

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

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

  1. try { 
  2.   throw new Error('ConardLi拋出的異常'); 
  3. } catch (error) { 
  4.   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 已經給定的異常類型,我們還可以自定義一些異常類型,比如我們要根據不同的異常類型給用戶不同的錯誤提示:

  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 '參數錯誤'; 
  16.   }  

 

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

2020-12-09 09:30:57

前端開發技術

2022-07-29 09:17:46

JavaScriptReactJS學習

2012-06-26 10:13:55

2011-04-01 11:16:06

hessian

2012-06-27 09:11:47

2015-07-15 13:34:37

JS開發習慣

2015-09-17 09:36:46

Chrome改變

2022-01-04 19:28:05

VMware云端虛擬化

2022-02-22 23:39:15

JavaScript編程語言Web

2016-11-01 16:41:08

直通網線連接端口傳輸數據

2022-03-18 12:46:56

Go 語言編程語言

2015-10-22 17:20:46

命令工具Linux

2019-07-18 12:57:21

大數據互聯網算法

2021-05-19 09:40:14

Android 12Android

2021-03-15 08:04:08

VMware虛擬機MSC認證

2010-11-23 13:34:12

微軟Lync

2023-05-18 09:00:00

人工智能StarCoder編程語言

2021-08-09 14:40:02

物聯網IOT智能家居

2021-09-07 14:36:53

DevSecOps開源項目

2021-01-26 01:03:36

云原生工具云原生
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 女同久久另类99精品国产 | 欧美日日 | 成人久久久 | 精品久久久久久久久久久久久久 | 中文字幕在线精品 | 日韩精品成人网 | 精品久久久久久久人人人人传媒 | 免费一级网站 | 免费超碰 | 在线色网| 91看片网| 国产一区二区三区四区在线观看 | 国产综合精品一区二区三区 | 亚洲国产成人久久久 | 日韩欧美亚洲 | 免费久久99精品国产婷婷六月 | 亚洲欧美成人影院 | 亚洲成人一区 | 免费小视频在线观看 | 久久久久久网站 | 欧美精品一区二区在线观看 | 亚洲一区二区三区视频 | 欧美亚州综合 | 福利视频1000| 欧美精品一区二区三区四区 在线 | 亚洲影音 | 中文字幕亚洲视频 | 91精品国产91久久久久久最新 | 国产精品久久久久久238 | 超碰地址 | 99国产精品久久久久 | 久久国产视频网站 | 欧美一级片在线看 | 一区二区三区免费 | 污书屋| 日韩电影一区二区三区 | 中文字幕在线三区 | 亚洲精品久久久久久久久久久久久 | 亚洲精品亚洲人成人网 | 91视频正在播放 | 欧美精品免费观看二区 |