Javascript學習之錯誤處理
阿新 • • 發佈:2021-11-18
throw語句
使用throw
語句丟擲一個異常。當丟擲異常,規定一個含有值的表示式要被丟擲。可以丟擲任意表達式而不是特定一種型別的表示式。
throw expression;
示例:
function UserException(excMessage) { this.excMessage = excMessage; this.excName = "UserException"; } UserException.prototype.toString = function () { return this.excName + ":" + this.excMessage; }throw new UserException("this is an exception!!!"); throw "Error2"; // String type throw 42; // Number type throw true; // Boolean type throw {message: function() { return "1111111111"; } };
在丟擲異常時宣告一個物件,就可以在catch塊中查詢到物件的屬性。
try...catch語句
try...catch
語句標記一塊待嘗試的語句,並規定一個以上的響應應該有一個異常被丟擲。如果我們丟擲一個異常,try...catch
語句就捕獲它。
try...catch
語句有一個包含一條或者多條語句的try程式碼塊,0個或1個的catch
程式碼塊,catch程式碼塊中的語句會在try程式碼塊中丟擲異常時執行。
如果try程式碼塊中的語句(或者try
程式碼塊中呼叫的方法)一旦丟擲了異常,那麼執行流程會立即進入catch
程式碼塊。如果try程式碼塊沒有丟擲異常,catch程式碼塊就會被跳過。
finally
程式碼塊總會緊跟在try和catch程式碼塊之後執行,但會在try和catch程式碼塊之後的其他程式碼之前執行。
finally
塊無論是否丟擲異常都會執行。如果丟擲了一個異常,就算沒有異常處理,finally
塊裡的語句也會執行。
示例:
function getMonthName(mon) { let months = ["Jan","Feb","Mar","Apr","May","Jun","Jul", "Aug","Sep","Oct","Nov","Dec"]; if (months.includes(mon)) { return mon; } else { throw "InvalidMonthNo"; } } try { let monthName = getMonthName("Mayyyy"); console.log(monthName); }catch (e) { console.log("exception:" + e); }finally{ console.log("excute finally!!"); }