如下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寫在外面,既美觀,又易懂,性能肯定不比放在裏面差。