日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS高级——错误处理

發布時間:2024/7/5 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS高级——错误处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、錯誤處理方案

開發中我們會封裝一些工具函數,封裝之后給別人使用:

  • 在其他人使用的過程中,可能會傳遞一些參數;
  • 對于函數來說,需要對這些參數進行驗證,否則可能得到的是我們不想要的結果;

很多時候我們可能驗證到不是希望得到的參數時,就會直接return:

  • 但是return存在很大的弊端:調用者不知道是因為函數內部沒有正常執行,還是執行結果就是一個undefined;
  • 事實上,正確的做法應該是如果沒有通過某些驗證,那么應該讓外界知道函數內部報錯了;

如何可以讓一個函數告知外界自己內部出現了錯誤呢?

  • 通過throw關鍵字,拋出一個異常;

throw語句:

  • throw語句用于拋出一個用戶自定義的異常;
  • 當遇到throw語句時,當前的函數執行會被停止(throw后面的語句不會執行);

如果我們執行代碼,就會報錯,拿到錯誤信息的時候我們可以及時的去修正代碼。

二、throw關鍵字

throw表達式就是在throw后面可以跟上一個表達式來表示具體的異常信息:

throw關鍵字可以跟上哪些類型呢?

  • 基本數據類型:比如number、string、Boolean
  • 對象類型:對象類型可以包含更多的信息

但是每次寫這么長的對象又有點麻煩,所以我們可以創建一個類:

三、Error類型

事實上,JavaScript已經給我們提供了一個Error類,我們可以直接創建這個類的對象:

四、異常的處理

我們會發現在之前的代碼中,一個函數拋出了異常,調用它的時候程序會被強制終止:

  • 這是因為如果我們在調用一個函數時,這個函數拋出了異常,但是我們并沒有對這個異常進行處理,那么這個異常會繼續傳遞到上一個函數調用中;
  • 而如果到了最頂層(全局)的代碼中依然沒有對這個異常的處理代碼,這個時候就會報錯并且終止程序的運行;

我們來看一下這段代碼的異常傳遞過程:

  • foo函數在被執行時會拋出異常,也就是我們的bar函數會拿到這個異常;
  • 但是bar函數并沒有對這個異常進行處理,那么這個異常就會被繼續傳遞到調用bar函數的函數,也就是test函數;
  • 但是test函數依然沒有處理,就會繼續傳遞到我們的全局代碼邏輯中;
  • 依然沒有被處理,這個時候程序會終止執行,后續代碼都不會再執行了;

五、異常的捕獲

但是很多情況下當出現異常時,我們并不希望程序直接推出,而是希望可以正確的處理異常:

  • 這個時候我們就可以使用try catch

在ES10(ES2019)中,catch后面綁定的error可以省略。
當然,如果有一些必須要執行的代碼,我們可以使用finally來執行:

  • finally表示最終一定會被執行的代碼結構;
  • 注意:如果try和finally中都有返回值,那么會使用finally當中的返回值;

總結

以上是生活随笔為你收集整理的JS高级——错误处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。