欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解JavaScript中的異常處理方法

 更新時(shí)間:2015年06月16日 11:32:13   投稿:goldensun  
這篇文章主要介紹了詳解JavaScript中的異常處理方法,包括基本的try...catch語(yǔ)句和throw語(yǔ)句的使用,需要的朋友可以參考下

 有三種類型的編程錯(cuò)誤:(1)語(yǔ)法錯(cuò)誤和(2)運(yùn)行時(shí)錯(cuò)誤(3)邏輯錯(cuò)誤:
語(yǔ)法錯(cuò)誤:

語(yǔ)法錯(cuò)誤,也被稱為解析錯(cuò)誤,在編譯時(shí)進(jìn)行傳統(tǒng)的編程語(yǔ)言,并出現(xiàn)在JavaScript解釋時(shí)。

例如,下面一行將導(dǎo)致一個(gè)語(yǔ)法錯(cuò)誤,因?yàn)樗鄙僖粋€(gè)右括號(hào):

<script type="text/javascript">
<!--
window.print(;
//-->
</script>

當(dāng)一個(gè)語(yǔ)法錯(cuò)誤在JavaScript中出現(xiàn),只有在同一個(gè)線程中包含的語(yǔ)法錯(cuò)誤的影響,在其他線程的代碼被執(zhí)行;代碼依賴于包含錯(cuò)誤的代碼不會(huì)被執(zhí)行。
運(yùn)行時(shí)錯(cuò)誤:

執(zhí)行(編譯/解釋后)在運(yùn)行時(shí)錯(cuò)誤,也被稱為異常,會(huì)引發(fā)。

例如,下面一行將導(dǎo)致運(yùn)行時(shí)錯(cuò)誤,因?yàn)檫@里的語(yǔ)法是正確的,但在運(yùn)行時(shí)它正試圖調(diào)用非存在的方法:

<script type="text/javascript">
<!--
window.printme();
//-->
</script>

例外情況也影響到它們發(fā)生的線程,允許其他JavaScript線程繼續(xù)正常執(zhí)行。
邏輯錯(cuò)誤:

邏輯錯(cuò)誤可能是最困難的類型的錯(cuò)誤跟蹤。這些錯(cuò)誤是不是一個(gè)語(yǔ)法或運(yùn)行時(shí)錯(cuò)誤的結(jié)果。相反,當(dāng)發(fā)生一個(gè)錯(cuò)誤的驅(qū)動(dòng)腳本邏輯,你沒有得到所期望的結(jié)果。

你可能無(wú)法抓到這些錯(cuò)誤,因?yàn)檫@取決于程序是什么類型的邏輯是基于業(yè)務(wù)需求。
try...catch...finally 語(yǔ)句:

JavaScript的最新版本中添加的異常處理能力。JavaScript實(shí)現(xiàn) try ... catch... finally結(jié)構(gòu)以及拋出操作來處理異常。

你可以捕獲程序員生成和運(yùn)行時(shí)異常,但不能捕獲JavaScript語(yǔ)法錯(cuò)誤。

這里是 try...catch...finally 塊語(yǔ)法:

<script type="text/javascript">
<!--
try {
  // Code to run
  [break;]
} catch ( e ) {
  // Code to run if an exception occurs
  [break;]
}[ finally {
  // Code that is always executed regardless of 
  // an exception occurring
}]
//-->
</script>

try塊必須后跟只有一個(gè)catch塊或者一個(gè)finally塊(或兩者之一)。當(dāng)一個(gè)異常在try塊時(shí),除被放置在e和catch塊被執(zhí)行。 try/catch語(yǔ)句后的可選finally塊無(wú)條件地執(zhí)行。
示例:

下面是一個(gè)例子,我們正試圖調(diào)用一個(gè)不存在的函數(shù),這將引發(fā)異常。讓我們來看看它的行為,不具有try ... catch:

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
  var a = 100;

  alert("Value of variable a is : " + a );
 
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

現(xiàn)在,讓我們嘗試使用 try ... catch 捕獲這個(gè)異常,并顯示一個(gè)用戶友好的消息。也可以取消此消息,如果要隱藏從用戶這個(gè)錯(cuò)誤。

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
  var a = 100;
  
  try {
   alert("Value of variable a is : " + a );
  } catch ( e ) {
   alert("Error: " + e.description );
  }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

可以使用finally塊將永遠(yuǎn)try/catch語(yǔ)句后,無(wú)條件地執(zhí)行。下面是一個(gè)例子:

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
  var a = 100;
  
  try {
   alert("Value of variable a is : " + a );
  }catch ( e ) {
   alert("Error: " + e.description );
  }finally {
   alert("Finally block will always execute!" );
  }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

throw 語(yǔ)句:

可以使用throw語(yǔ)句來提高你的內(nèi)置異常或自定義異常。后來這些異??梢员徊东@并可以采取適當(dāng)?shù)男袆?dòng)。

以下是表示throw語(yǔ)句的用法的例子。

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
  var a = 100;
  var b = 0;
  
  try{
   if ( b == 0 ){
     throw( "Divide by zero error." ); 
   }else{
     var c = a / b;
   }
  }catch ( e ) {
   alert("Error: " + e );
  }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

您可以使用字符串,整數(shù),布爾或?qū)ο笤谝粋€(gè)函數(shù)拋出一個(gè)異常,那么可以捕捉例外在相同的函數(shù),我們?cè)谏厦孀隽耍蛘呤褂胻ry ... catch塊在其他的函數(shù)。
onerror() 語(yǔ)法

onerror事件處理程序是第一個(gè)特點(diǎn),方便JavaScript處理錯(cuò)誤。錯(cuò)誤事件被觸發(fā)窗口對(duì)象,每當(dāng)一個(gè)異常頁(yè)面上出現(xiàn)。例如:

<html>
<head>
<script type="text/javascript">
<!--
window.onerror = function () {
  alert("An error occurred.");
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

onerror事件處理程序提供了三條信息,以找出錯(cuò)誤的確切性質(zhì):

  1.     錯(cuò)誤消息 . 瀏覽器將顯示給定的錯(cuò)誤相同的消息
  2.     URL . 在發(fā)生錯(cuò)誤的文件
  3.     行號(hào). 在導(dǎo)致錯(cuò)誤的URL給出的行號(hào)

這里是例子來說明如何提取此信息

<html>
<head>
<script type="text/javascript">
<!--
window.onerror = function (msg, url, line) {
  alert("Message : " + msg );
  alert("url : " + url );
  alert("Line number : " + line );
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

可以顯示在任何方式,你覺得這是更好的提取信息。

可以使用onError方法來顯示錯(cuò)誤消息的情況下沒有在如下加載圖像的任何問題:

<img src="myimage.gif"
  onerror="alert('An error occurred loading the image.')" />

可以使用的onerror許多HTML標(biāo)記錯(cuò)誤的情況下顯示相應(yīng)的信息。

相關(guān)文章

最新評(píng)論