JavaScript中try catch finally 使用

quguiliang 14年前發布 | 2K 次閱讀

在IE泄漏中處理是遇到的方法,通過try..catch..finally方式:

<DIV class=dp-highlighter>

<DIV class=bar>

<DIV class=tools>Java代碼 <A title=復制代碼 onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="/misc/goto?guid=4958346284570877790"><IMG alt=復制代碼 src="/images/icon_copy.gif"></A></DIV></DIV>

<OL class=dp-j>

  • function createButton(){   
  •  var obj = document.createElement("button");   
  •  obj.innerHTML="點我!";   
  •  obj.onclick=function(){   
  •    //處理click事件   
  •  }   
  •  obj.onmouseover=function(){   
  •    //處理mouseover事件   
  •  }   
  • try{   
  •   return obj;   
  •  }finally{   
  •    obj = null;//在return 之后才執行,解決了在return后將obj置null問題   
  •  }   
  • }   
  • </OL></DIV><PRE style="DISPLAY: none" class=java name="code">function createButton(){ var obj = document.createElement("button"); obj.innerHTML="點我!"; obj.onclick=function(){ //處理click事件 } obj.onmouseover=function(){ //處理mouseover事件 } try{ return obj; }finally{ obj = null;//在return 之后才執行,解決了在return后將obj置null問題 } } </PRE>

    錯誤處理結構:  

    <DIV class=dp-highlighter>

    <DIV class=bar>

    <DIV class=tools>Java代碼 <A title=復制代碼 onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="/misc/goto?guid=4958346284570877790"><IMG alt=復制代碼 src="/images/icon_copy.gif"></A></DIV></DIV>

    <OL class=dp-j>

  • try{      
  •     tryStatements   
  • }      
  • catch(exception){      
  •     catchStatements}      
  • finally{      
  •     finallyStatements   
  • }     
  • </OL></DIV><PRE style="DISPLAY: none" class=java name="code"> try{
    tryStatements }
    catch(exception){
    catchStatements}
    finally{
    finallyStatements } </PRE>
    參數:  
       tryStatement    
       必選項。可能發生錯誤的語句。    
       exception    
       必選項。任何變量名。exception的初始化值是扔出的錯誤的值。    
       catchStatement    
       可選項。處理在相關聯tryStatement中發生的錯誤的語句。    
       finallyStatements    
       可選項。在所有其他過程發生之后無條件執行的語句。    

    說明:     
    如果在tryStatements中發生了一個錯誤,則程序控制被傳給catchStatements來處理 ,錯誤處理發生之后,將會執行finallyStatements中語句。

    <DIV class=dp-highlighter>

    <DIV class=bar>

    <DIV class=tools>Java代碼 <A title=復制代碼 onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="/misc/goto?guid=4958346284570877790"><IMG alt=復制代碼 src="/images/icon_copy.gif"></A></DIV></DIV>

    <OL class=dp-j>

  • (function(){   
  •     try{   
  •        console.info('1');   
  •        return 'try begin'   //1   
  •     }catch(e){   
  •        console.info('2');   
  •        return 'try catch'   //2    
  •     }finally{   
  •        console.info('3');   
  •        return 'try finally' //3   
  •     }   
  • })();  
  • </OL></DIV><PRE style="DISPLAY: none" class=java name="code">(function(){ try{ console.info('1'); return 'try begin' //1 }catch(e){ console.info('2'); return 'try catch' //2 }finally{ console.info('3'); return 'try finally' //3 } })();</PRE>
    執行上述代碼,發現在1返回return前將會執行到finally,如果其中有return那么函數執行返回,否則執行到1處return返回。如果注釋掉3將會返回什么吶?

    catch中e.name錯誤類型:

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

     本文由用戶 quguiliang 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!