<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          JavaScript 異常處理

          共 3097字,需瀏覽 7分鐘

           ·

          2020-08-16 08:33

          點擊上方藍色字體,選擇“標星公眾號”

          優(yōu)質(zhì)文章,第一時間送達

          ? 作者?|?云崖先生?

          來源 | urlify.cn/Ebqiyq

          66套java從入門到精通實戰(zhàn)課程分享


          1、程序異常

          程序異常可分為邏輯異常和語法異常,對于初學(xué)者而言語法異常居多,隨著不斷的學(xué)習(xí)對語言越來越熟悉后語法異常減少邏輯異常增多。

            在JavaScript中提供了對異常進行處理的語句,在適當?shù)臅r候使用它們能夠使程序變得更加健壯。

            但是要注意不要濫用異常處理,它會使程序的可讀性變差。

          2、異常對象

          ? ??所有的異常都是對象


          ? 異常類型

            在JavaScript中,常見異常類型有以下幾種。


          3、異常捕獲??

          ? ?try catch

            使用trycatch語句進行捕獲異常。

            try用于檢測可能出現(xiàn)異常的代碼塊

            catch用于處理捕捉到的異常,可指定參數(shù)獲取異常信息

            try...catch?語句有一個包含一條或者多條語句的try代碼塊,0個或1個的catch代碼塊,catch代碼塊中的語句會在try代碼塊中拋出異常時執(zhí)行。

            如果try代碼塊中的語句(或者try?代碼塊中調(diào)用的方法)一旦拋出了異常,那么執(zhí)行流程會立即進入catch代碼塊。

            如果try代碼塊沒有拋出異常,catch代碼塊就會被跳過。

          <script>

          ????????"use strict"
          ;

          ????????try?{
          ????????????????console.log(username);
          ????????} catch?(e) { // 會捕獲異常的所有信息
          ????????????????console.log("處理了一個異常:", e);
          ????????}

          /*

          處理了一個異常: ReferenceError: username is not defined
          ????at 1.html:56

          */


          script>


          finally

          finally塊包含了在trycatch塊完成后、下面接著try...catch的語句之前執(zhí)行的語句。

            finally塊無論是否拋出異常都會執(zhí)行。如果拋出了一個異常,就算沒有異常處理,finally塊里的語句也會執(zhí)行。

          <script>

          ????????"use strict"
          ;

          ????????try?{
          ????????????????console.log(username);
          ????????} catch?(e) { // 會捕獲異常的所有信息
          ????????????????console.log("處理了一個異常,ID:", e);
          ????????} finally?{
          ????????????????console.log("無論有沒有異常都會執(zhí)行我");
          ????????}


          script>


          4、主動異常

          throw

           在某些時候我們需要主動拋出異常,使用throw語句拋出異常。
          <script>

          ????????"use strict"
          ;

          ????????throw?new?Error("這是一個錯誤")

          script>


          表達式形式你可以拋出任意表達式而不是特定一種類型的表達式。下面的代碼拋出了幾個不同類型的表達式:
          <script>

          ????????"use strict"
          ;

          ????????throw?"Error2"; // String type
          ????????throw?42; // Number type
          ????????throw?true; // Boolean type
          ????????throw?{ toString: function?() { return?"I'm an object!"; } };

          script>


          5、自定義異常

          繼承Error原型對象,可配置自定義的異常。

            Error構(gòu)造函數(shù)具有message可選參數(shù),用于顯示人類可閱讀的錯誤描述信息

          函數(shù)形式

          <script>

          ????????"use strict"
          ;

          ????????function?MyError(message) {
          ????????????????this.name = 'MyError';
          ????????????????this.message = message || 'Default Message';
          ????????????????this.stack = (new?Error()).stack;
          ????????}

          ????????Object.setPrototypeOf(MyError, Error); // 繼承Error原型對象

          ????????try?{
          ????????????????throw?new?MyError();
          ????????} catch?(e) {
          ????????????????console.log(e.name); // MyError
          ????????????????console.log(e.message); // Default Message
          ????????}


          ????????try?{
          ????????????????throw?new?MyError("自定義異常被拋出");
          ????????} catch?(e) {
          ????????????????console.log(e.name); // MyError
          ????????????????console.log(e.message); // 自定義異常被拋出
          ????????}

          script>


          類形式

          <script>

          ????????"use strict"
          ;

          ????????class?MyError?extends?Error?{
          ????????????????constructor(message) {
          ????????????????????????super();
          ????????????????????????this.name = "MyError";
          ????????????????????????this.message = message || 'Default Message';
          ????????????????????????this.stack = (new?Error()).stack;
          ????????????????}
          ????????}

          ????????try?{
          ????????????????throw?new?MyError();
          ????????} catch?(e) {
          ????????????????console.log(e.name); // MyError
          ????????????????console.log(e.message); // Default Message
          ????????}


          ????????try?{
          ????????????????throw?new?MyError("自定義異常被拋出");
          ????????} catch?(e) {
          ????????????????console.log(e.name); // MyError
          ????????????????console.log(e.message); // 自定義異常被拋出
          ????????}

          script>





          ??? ?




          感謝點贊支持下哈?

          瀏覽 52
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲综合大片69999 | 中文字幕一区二区三区四区五区人 | 官网99热精品 | 中文字幕一区二区三区乱码 | 婷婷激情在线综合 |