JavaScript try...catch...finally
示例
此示例在 try 塊中有一個拼寫錯誤。Alert 拼寫錯誤。
catch 塊捕獲錯誤並執行程式碼來處理它。
<p id="demo"></p>
<script>
try {
adddlert("歡迎訪客!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
自己動手試一試 »
更多示例見下文。
描述
當發生 錯誤 時,JavaScript 將 停止 並生成錯誤訊息。
注意
這在技術上的術語是:JavaScript 丟擲異常。
JavaScript 建立一個具有兩個屬性的 錯誤物件:name 和 message。
try...catch...finally
語句組合可在不停止 JavaScript 的情況下處理錯誤。
try
語句定義要執行(嘗試)的程式碼塊。
catch
語句定義一個程式碼塊來處理任何錯誤。
finally
語句定義一個程式碼塊,無論結果如何都將執行。
throw
語句定義一個自定義錯誤。
catch
和 finally
都是可選的,但您必須使用其中一個。
注意
將 throw 與 try 和 catch 結合使用,可以控制程式流並生成自定義錯誤訊息。
另請參閱
語法
try {
tryCode - 要執行的程式碼塊
}
catch(err) {
catchCode - 處理錯誤的程式碼塊
}
finally {
finallyCode - 無論 try 結果如何都將執行的程式碼塊
}
引數
引數 | 描述 |
tryCode | 必需。 執行時要測試的程式碼塊。 |
err | 錯誤物件的本地引用。 |
catchCode | 可選。 發生錯誤時要執行的程式碼塊。 |
finallyCode | 可選。 無論 try 結果如何都將執行的程式碼塊 |
更多示例
此示例檢查輸入。
如果值錯誤,則會丟擲異常 (err)
<p>請輸入 5 到 10 之間的數字:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">測試輸入</button>
<p id="message"></p>
<script>
function myFunction() {
const message = document.getElementById("message");
message.innerHTML = "";
let 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 結果如何。
function myFunction()
const message = document.getElementById("message");
message.innerHTML = "";
let 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 = "";
}
}
自己動手試一試 »
瀏覽器支援
try...catch
是 ECMAScript3 (ES3) 的一個特性。
ES3 (JavaScript 1999) 在所有瀏覽器中都得到完全支援
Chrome | Edge | Firefox | Safari | Opera | IE |
是 | 是 | 是 | 是 | 是 | 是 |