Cleanest way to write retry logic?

前端 未结 29 3150
旧巷少年郎
旧巷少年郎 2020-11-22 03:01

Occasionally I have a need to retry an operation several times before giving up. My code is like:

int retries = 3;
while(true) {
  try {
    DoSomething();
         


        
29条回答
  •  梦如初夏
    2020-11-22 03:25

    Do it simple in C#, Java or other languages:

      internal class ShouldRetryHandler {
        private static int RETRIES_MAX_NUMBER = 3;
        private static int numberTryes;
    
        public static bool shouldRetry() {
            var statusRetry = false;
    
            if (numberTryes< RETRIES_MAX_NUMBER) {
                numberTryes++;
                statusRetry = true;
                //log msg -> 'retry number' + numberTryes
    
            }
    
            else {
                statusRetry = false;
                //log msg -> 'reached retry number limit' 
            }
    
            return statusRetry;
        }
    }
    

    and use it in your code very simple:

     void simpleMethod(){
        //some code
    
        if(ShouldRetryHandler.shouldRetry()){
        //do some repetitive work
         }
    
        //some code    
        }
    

    or you can use it in recursive methods:

    void recursiveMethod(){
        //some code
    
        if(ShouldRetryHandler.shouldRetry()){
        recursiveMethod();
         }
    
        //some code    
        }
    

提交回复
热议问题