成人免费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-27 09:11:47

2012-06-26 10:13:55

2011-04-01 11:16:06

hessian

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 語言編程語言

2021-01-26 01:03:36

云原生工具云原生

2020-09-23 13:40:01

信用卡欺詐網絡釣魚攻擊

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認證

2023-05-18 09:00:00

人工智能StarCoder編程語言

2021-09-07 14:36:53

DevSecOps開源項目

2021-08-09 14:40:02

物聯網IOT智能家居
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产欧美一区二区三区在线看 | 久久伊 | 国产精品久久 | www成年人视频 | 中文字幕高清 | 久久天天躁狠狠躁夜夜躁2014 | 秋霞a级毛片在线看 | 亚洲精品久久久一区二区三区 | 国产精品久久久久久久久久久久午夜片 | 亚洲国产精久久久久久久 | 天天看天天干 | 搞黄视频免费看 | 亚洲av毛片成人精品 | 成人亚洲视频 | 亚洲精品视频一区 | 欧美激情欧美激情在线五月 | 日韩av美女电影 | 一二区视频 | 伊人成人免费视频 | 日韩中文欧美 | 国产精品视频一区二区三区 | 91亚洲国产成人久久精品网站 | 黄色操视频 | 成年人网站免费视频 | 国产精品永久免费 | 久久最新精品视频 | 一区二区免费 | 久久久青草婷婷精品综合日韩 | 成人黄色电影免费 | 免费一二区| 国产精品视频不卡 | 久久一区二区三区免费 | 国产精品久久久爽爽爽麻豆色哟哟 | www.亚洲成人网 | 国产精久久久 | 亚洲成人综合网站 | 免费一级欧美在线观看视频 | 国产99热在线| 国产精品国产精品 | 尤物在线视频 | 麻豆亚洲 |