try catch放在循环内外的区别

  • Post author:
  • Post category:其他


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



版权声明:本文为lihb018原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。