語法錯誤(SyntaxError)
語法輸入錯誤或中括號、大括號不完整造成錯誤
引用錯誤(Uncaught ReferenceError)
引用未定義的變數或賦予值錯誤
範圍錯誤(RangeError)
數值超出有效範圍
類型錯誤(TypeError)
變數或參數不是預期類型時發生的錯
幫助捕捉程式的錯誤,try區塊是監控程式碼,catch區塊是例外發生時的處理程序,finally不管有沒有發生都會執行
try {
// 如果出現錯誤,就會被catch
} catch (自訂變數) {
// 發生錯誤後,有處理的區域
//搭配.name:儲存錯誤型別、.message:儲存錯誤訊息
} finally {
//最後程式處理的區域
//可以省略此區域,不管有沒有錯都會執行
}
//ex:
<script>
try {
let num = 65;
if( num >=50){
console.log(a + "大於50");
}
else{
console.log(a + "小於50")
}
}
catch (e) {
//catch區塊在console顯示的訊息用錯誤表示,可改用console.error()
console.log(e.name + ">" + e.message);
//console.error(e.name + ">" + e.message);
}
finally {
console.log("不管有沒有錯都會執行");
}
</script>
不建議寫try...catch:
可拋出數字、字串、Error 物件或是自己定義的錯誤訊息
<p>輸入年齡</p>
<input id="inputBox" type="text">
<button type="button" onclick="run()">輸入年齡</button>
<p id="content"></p>
<script>
function run() {
var message, x;
message = document.getElementById("content");
message.innerHTML = "";
x = document.getElementById("inputBox").value;
try {
if(x == "") throw "未輸入年齡";
if(isNaN(x)) throw "不是数字";
x = Number(x);
if(x > 18) throw "滿18歲";
if(x < 5) throw "未滿18歲";
}
catch(err) {
message.innerHTML = "输入:" + err;
}
finally {
document.getElementById("inputBox").value = "";
}
}
</script>