JavaScript錯誤
在執行JavaScript代碼的時候,會發生很多錯誤
錯誤可能是程式猿的編碼錯誤,由錯誤輸入引起的錯誤,或者其他不可見的原因
- try語句使我們能夠測試代碼中的錯誤
- catch語句能夠允許我們自己處理錯誤
- throw允許自定義建立錯誤
- finally能夠在無論try和catch結果是什麼的前提下自定義都能執行的代碼片段
- 執行個體運用 try 和 catch
<p id="demo"></p>
<script>
try{
allert('歡迎您');
}
catch(err) {
document.getElementById("demo").innerHTML = "err.message"
}
</script>
在測試(try)代碼片段時,allert是一個沒有被定義的方法,是以最終結果傳回的是:allert is not defined
- 執行個體運用 try、catch、throw 和 finally
<p>請輸入5-10之間的數字</p>
<input type="text" id="demo">
<input type="button" value="測試輸入" onclick = "myFunction()">
<p id="message"></p>
<script>
function myFunction(){
var message = document.getElementById("message");
var x = document.getElementById("demo").value;
console.log(x);
try{
if(x=="") throw "空的";
if(isNaN(x)) throw "不是數字";
if(x<5) throw "太小";
if(x>10) throw "太大"
}
catch(err){
message.innerHTML = err;
}
finally {
document.getElementById("demo").value = '';
}
}
</script>
在上面這串代碼中,throw後面自定義了很多錯誤來供catch來調用,finally表示不管上面執行的是什麼,最後我都要将輸入框中的内容清空
-
Error對象
JavaScript擁有當錯誤發生時提供錯誤資訊的内置error對象。
error對象提供兩個有用的屬性:name和message。
屬性 | 描述 |
---|---|
name | 設定或者傳回錯誤名 |
message | 設定或傳回錯誤消息(一條字元串) |
如第一個例子傳回的err.name和err.mseeage分别是
allert is not defined // err.message
ReferenceError // err.name 非法引用