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

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值