try catch放在循環內外的區別

如下2段代碼

public void test1() 
{   
    while(true) 
    {   
        try
        {   
            Thread.sleep(30*60*1000);   
        }
        catch (InterruptedException e)
        {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
        }   
    }   
}   
   
public void test2()
{   
    try
    {   
        while(true)
        {   
            Thread.sleep(30*60*1000);   
        }   
    }
    catch (InterruptedException e)
    {   
        // TODO Auto-generated catch block   
        e.printStackTrace();   
    }   
} 

  test1是將try catch放在了循環內,test2是將try catch放在了循環個。

  二者的區別是如果test2中循環內容拋出異常的話,就直接跳出了循環,而test1在執行中拋出異常會繼續循環。

  至於二者選擇哪種方式更好就要看你循環的內容了,①如果是爲了計算一個結果的話,其中一個遇到異常那麼即使繼續計算後面的,最後的結果也不會正確,那麼我們就需要按test2的方式編碼;②如果是一個服務器線程維持一直處理其它線程產生的數據,爲了保證系統的穩定性,就必須按test1的方式來編碼。

  另外有些人喜歡比較性能,我覺得沒必要比較性能。如果需求是第②種情況沒的選,如果是第①種情況,try catch寫在外面,既美觀,又易懂,性能肯定不比放在裏面差。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章