“重试”的实现

“重试”的实现
 
在软件开发中,经常会有这样一种需求:当发生异常、特殊情况、失败等条件的时候,重试执行,最大重试次数为N次。如果超过N次还是没有成功,则跳过。
 
这个问题常常常常令人感觉有些棘手,因为java没哟goto,而且要对次数、失败条件进行判断比较等。
 
在此做深入分析:
重试,意味着代码要反复执行,需要做循环。
当特殊条件出现才反复,则需要判断特殊条件,需要if语句。
有最大次数限制,说明循环有最大次数n<?。
没有成功、跳过,说明程序没有因为特殊情况挂掉,要捕获异常和特殊情况。在特殊条件发生时做一些补救(重试处理)。
 
针对谁上面的分析再写代码就容易很多了:
 
通常会将最大重试次数作为系统的参数让用户配置,并且对数据范围做处理。
 
下面是伪代码:
......

int redo = 0;     //重试次数
while(redo<MAXTRY+1){     //MAXTRY为最大重试次数
         try{
                doSomething();     //可能发生特殊情况的方法
                 break;                     //执行成功后直接退出此循环
        } catch{
                redo++;                 //异常时,重试次数增加
                 continue;             //结束本次循环
        }
}

......
 
此方式适合Java、C#、C++等语言。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值