天天看點

JavaScript錯誤-throw和try to catchJavaScript錯誤

JavaScript錯誤

在執行JavaScript代碼的時候,會發生很多錯誤

錯誤可能是程式猿的編碼錯誤,由錯誤輸入引起的錯誤,或者其他不可見的原因

  • try語句使我們能夠測試代碼中的錯誤
  • catch語句能夠允許我們自己處理錯誤
  • throw允許自定義建立錯誤
  • finally能夠在無論try和catch結果是什麼的前提下自定義都能執行的代碼片段
  1. 執行個體運用 try 和 catch
<p id="demo"></p>
<script>
try{
  allert('歡迎您');
}
catch(err) {
  document.getElementById("demo").innerHTML = "err.message"
}
</script>
           

在測試(try)代碼片段時,allert是一個沒有被定義的方法,是以最終結果傳回的是:allert is not defined

  1. 執行個體運用 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表示不管上面執行的是什麼,最後我都要将輸入框中的内容清空

  1. Error對象

    JavaScript擁有當錯誤發生時提供錯誤資訊的内置error對象。

    error對象提供兩個有用的屬性:name和message。

屬性 描述
name 設定或者傳回錯誤名
message 設定或傳回錯誤消息(一條字元串)

如第一個例子傳回的err.name和err.mseeage分别是

allert is not defined  // err.message
ReferenceError  // err.name  非法引用
           

繼續閱讀