🙂
JavaScript - 程式設計
  • JavaScript - 程式設計
  • 1. 簡介
    • 1.1 講者簡介
    • 1.2 課程簡介
    • 1.3 開發工具簡介
    • 1.4 第一個 JavaScript
  • 2. 網站技術簡介
    • 2.1 網站前端技術
    • 2.2 網站後端技術
    • 2.3 JavaScript 簡介
  • 3. JavaScript程式語言
    • 3.1 套用 JavaScript
    • 3.2 註解(Comment)
    • 3.3 變數(Variable)
    • 3.4 資料型態(Data Types)
    • 3.5 Strict 模式
    • 3.6 運算子(Operator)
    • 3.7 字串(String)
    • 3.8 數值(Number)
    • 3.9 陣列(Array)
    • 3.10 物件(Object)
    • 3.11 條件式(Conditional)
    • 3.12 迴圈(Loop)
    • 3.13 函式(Function)
    • 3.14 類別(Class)
    • 3.15 傳值呼叫、傳址呼叫
    • 3.16 變數可視範圍(scope)
    • 3.17 錯誤補捉(Errors)
    • 3.18 資料格式
  • 4. JavaScript常用函式及主題
    • 4.1 JSON
    • 4.2 時間間隔執行
    • 4.3 數學(Math)
    • 4.4 日期時間(Date)
    • 4.5 陣列迭代(Iteration)
    • 4.6 陣列排序(Sort)
    • 4.7 正規表達式(Regular Expression)
    • 4.8 效能測試
    • 4.9 this 關鍵字
  • 5. 參考資料
Powered by GitBook
On this page
  • 範例 1:try...catch...
  • 範例 2:throw
  • 範例 3:finally
  1. 3. JavaScript程式語言

3.17 錯誤補捉(Errors)

在 javascript/practice 資料夾下,建立 try_catch.html 來練習。

try:檢查某一段程式,是否有錯誤。

catch:如果有錯誤,就執行這裡的程式。

throw:可自訂錯誤。

finally:執行完 try 和 catch 的程式之後,最後執行 finally 的程式。

範例 1:try...catch...

下例的第 2 行並不會執行,因為第 1 行跟本沒有 my_func 這個函式:

my_func("Welcome");
alert("hello");

那改成以下呢?(請觀察 console 印出的訊息。)透過 try...catch 這樣包起來,如果 try 區塊裡的程式有錯,就會中斷 try 裡的程式,然後透過 catch 區塊補捉錯誤,就執行 catch 裡的程式:

try{
  my_func("Welcome");
  alert("hello");
}catch(error){
  alert("執行 error 的程式");
  console.log(error);
}
alert("繼續執行");

範例 2:throw

先測試以下程式:

function division(x, y){
  try {
    return x / y;
  } catch(error) {
    return error;
  }
}

var result1 = division(5, 2);
console.log(result1); // 2.5

var result2 = division(5, 0);
console.log(result2); // Infinity

改成以下,透過 throw 可以自訂丟出的錯誤訊息,如果 y 等於 0,那就執行 catch 裡的程式(主要在 try 區塊裡,加上 if 的那段程式):

function division(x, y){
  try {
    if(y == 0){
      throw "分母不能等於 0。";
    }
    return x / y;
  } catch(error) {
    return error;
  }
}

var result1 = division(5, 2);
console.log(result1); // 2.5

var result2 = division(5, 0);
console.log(result2); // 分母不能等於 0。

範例 3:finally

透過 finally ,可以在 try 和 catch 都執行完程式的時候,會接續執行 finally 區塊裡的程式:

function division(x, y){
  try {
    if(y == 0){
      throw "分母不能等於 0。";
    }
    return x / y;
  } catch(error) {
    return error;
  } finally{
    console.log("執行完畢");
  }
}

var result1 = division(5, 2);
console.log(result1); // 2.5

var result2 = division(5, 0);
console.log(result2); // 分母不能等於 0。

在 return 之前,會先將 finally 裡的程式,先執行完。

Previous3.16 變數可視範圍(scope)Next3.18 資料格式

Last updated 2 years ago