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写在外面,既美观,又易懂,性能肯定不比放在里面差。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页