JavaScript try/catch/finally 語句

風靈使發表於2018-05-16

在下面的例子中,我們故意在 try 塊的程式碼中寫了一個錯字。

該例項本應該提醒”歡迎光臨!”,但彈出的是拼寫錯誤資訊。

catch 塊會捕捉到 try 塊中的錯誤,並執行程式碼來處理它:

try {
    adddlert("歡迎光臨!");
}
catch(err) {
    document.getElementById("demo").innerHTML = err.message;
}

定義和用法

try/catch/finally 語句用於處理程式碼中可能出現的錯誤資訊。

錯誤可能是語法錯誤,通常是程式設計師造成的編碼錯誤或錯別字。也 可能是拼寫錯誤或語言中缺少的功能(可能由於瀏覽器差異)。

  • try語句允許我們定義在執行時進行錯誤測試的程式碼塊。
  • catch 語句允許我們定義當 try 程式碼塊發生錯誤時,所執行的程式碼塊。
  • finally 語句在 try 和 catch 之後無論有無異常都會執行。
  • 注意: catch 和 finally 語句都是可選的,但你在使用 try 語句時必須至少使用一個。
  • 提示: 當錯誤發生時, JavaScript 會停止執行,並生成一個錯誤資訊。使用 throw 語句來建立自定義訊息(丟擲異常)。如果你將 throwtrycatch一起使用,就可以控制程式輸出的錯誤資訊。

語法

try {
    tryCode - 嘗試執行程式碼塊
}
catch(err) {
    catchCode - 捕獲錯誤的程式碼塊
}
finally {
    finallyCode - 無論 try / catch 結果如何都會執行的程式碼塊
}

引數值

引數 描述
tryCode 必須。檢查是否有錯誤的程式碼塊。
err 必須(如果使用 catch)。指定區域性變數應用的錯誤。該變數可以引用 Error 物件 (包含發生的錯誤資訊,如 “‘addlert’ 沒有定義”)。如果異常通過 throw 語句建立 , 該 變數引用了為在throw語句中指定的物件 (檢視 “更多例項”)
catchCode 可選。如果 try 語句發生錯誤執行的程式碼塊。如果 try 語句沒發生錯誤該程式碼不會執行。
finallyCode 可選。無論 try / catch 的結果如何都會執行。

更多例項


<p>請輸入 5 和 10 之間的一個數:</p>

<input id="demo" type="text">
<button type="button" onclick="myFunction()">檢測輸入</button>
<p id="message"></p>

<script>
function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "")  throw "為空";
        if(isNaN(x)) throw "不是一個數字";
        if(x > 10)   throw "太大了";
        if(x < 5)    throw "太小了";
    }
    catch(err) {
        message.innerHTML = "輸入的值 " + err;
    }
}
</script>

finally 語句無論 try 和 catch 執行結果如何都會執行:


function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "")  throw "為空";
        if(isNaN(x)) throw "不是一個數字";
        if(x > 10)   throw "太大";
        if(x < 5)    throw "太小";
    }
    catch(err) {
        message.innerHTML = "輸入的值 " + err;
    }
    finally {
        document.getElementById("demo").value = "";
    }
}

相關文章