首頁 >web前端 >js教程 >javascript中 try catch用法_javascript技巧

javascript中 try catch用法_javascript技巧

WBOY
WBOY原創
2016-05-16 15:44:451372瀏覽

先看個實例

<input id='b1' type='button' value='按钮'/>
<script>
window.onload=function(){
var oBtn=document.getElementById("b1");
function mto(){
alert("123");
};

try //非IE
{
oBtn.attachEvent("onclick",mto,false);

}
catch(e)//IE
{
oBtn.addEventListener("click",mto,false);
}
};
</script>

注意的是:

addEventListener和attachEvent的差別在第一個參數 前者是click 後者是onclick

addEventListener 在其元素所在的元素作用域中運作

attachEvent在全域作用域中運作(this=window)

Try...Catch 語句

try...catch 可以測試程式碼中的錯誤。 try 部分包含需要執行的程式碼,而 catch 部分包含錯誤發生時執行的程式碼。
語法:

try
{
//在此运行代码
}
catch(err)
{
//在此处理错误
}

注意:try...catch 使用小寫字母。大寫字母會出錯。

try...catch...finally    語句   
    
   為    JScript    實現錯誤處理。   

  try  {  
     tryStatements}  
  catch(exception){  
     catchStatements}  
  finally  {  
     finallyStatements}  

   =============   

參數   

   tryStatement    
   必選項。可能發生錯誤的語句。    
   exception    
   必選項。任何變數名。 exception    的初始化值是丟出的錯誤的值。    
   catchStatement    
   可選項。處理在相關聯的    tryStatement    中發生的錯誤的語句。    
   finallyStatements    
   可選項。在所有其他過程發生之後無條件執行的語句。     

說明  

   try...catch...finally    語句提供了一種方法來處理可能發生在給定程式碼區塊中的某些或全部錯誤,同時仍保持程式碼的運作。如果發生了程式設計師沒有處理的錯誤,JScript    只提供使用者它的普通錯誤訊息,就好像沒有錯誤處理一樣。   

tryStatements    參數包含可能發生錯誤的程式碼,而    catchStatement    則包含處理任何發生了的錯誤的程式碼。如果在    tryStatements    中發生了一個錯誤,則程式控制被傳給    catchStatements    來處理。 exception    的初始化值是發生在    tryStatements    的錯誤的值。如果錯誤不發生,則不執行    catchStatements。   

如果在與發生錯誤的    tryStatements    相關聯的    catchStatements    中無法處理該錯誤,則使用    throw    語句來傳播、或重新丟出這個錯誤給更進階的處理程序錯誤。   

執行完    tryStatements    中的語句,並在    catchStatements    的所有錯誤處理發生後,且可無條件執行    finallyStatements    中的語句。   

請注意,即使在    try    或    catch    區塊中回傳一個語句,或在    catch    區塊重新丟出一個錯誤,但一般將確保    finallyStatments    的運作,除非有未處理的錯誤。 (例如,在    catch    區塊中發生運作時錯誤。)。  

範例   

   以下的範例闡明了JScript    特例處理是如何進行的。   

  try  {  
    print("Outer  try  running..");  
    try  {  
      print("Nested  try  running...");  
      throw  "an  error";  
    }  
    catch(e)  {  
      print("Nested  catch  caught  "  +  e);  
      throw  e  +  "  re-thrown";  
    }  
    finally  {  
      print("Nested  finally  is  running...");  
    }     
  }  
  catch(e)  {  
    print("Outer  catch  caught  "  +  e);  
  }  
  finally  {  
    print("Outer  finally  running");  
  }  
  //  Windows  Script  Host  作出该修改从而得出  WScript.Echo(s)  
  function  print(s){  
     document.write(s);  
  }  

   將得到下列結果:   

   Outer    try    running..  
   Nested    try    running...  
   Nested    catch    caught    an    error  
   Nested    finally    is    running...  
   Outer    catch    caught    an    error    re-thrown  
   Outer    finally    running

如下是Javascript的例外處理的一個實例。

var array = null;
try {
  document.write(array[0]);
} catch(err) {
  document.writeln("Error name: " + err.name + "");
  document.writeln("Error message: " + err.message);
}
finally{
  alert("object is null");
}

程式執行過程

1. array[0]的時候因為沒有創建array數組,array是個空對象,程式中呼叫array[0]就會產生object is null的異常
2. catch(err)語句捕獲到這個異常通過err.name打印了錯誤類型,err.message打印了錯誤的詳細信息.
3. finally類似java的finally,無論有無異常都會執行.

現總結Error.name的六種值對應的資訊:

1. EvalError:eval()的使用與定義不一致
2. RangeError:數值越界
3. ReferenceError:非法或無法辨識的引用數值
4. SyntaxError:發生語法解析錯誤
5. TypeError:操作數型別錯誤
6. URIError:URI處理函數使用不當

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn