C#异常执行重试的一种实现方法

模式介绍

重试模式,是应用在异常处理中,发生异常的时候,能够对业务程序进行重新调用,在实际中,可以使用Polly提供稳定,简单的用法,自己实现主要是对模式的一种了解。

 

模式实现

  public class RetryPattern
    {
        /**
         * 重试模式可以用Polly替代
         * 自己实现一种模式
         */

        #region 构造函数

        public RetryPattern()
        {
        }

        #endregion 构造函数

        #region 变量

        private uint MaxTryCount; // 最大重试次数
        private uint CurrentTryCount; // 当前重试的次数
        private bool RunResult = true; // 执行结果

        #endregion 变量

        #region 方法

        #region 设置最大重试次数

        public void SetMaxCount(uint tryCount)
        {
            // 校验
            if (tryCount == 0) throw new ArgumentException("重试次数不能为0");

            MaxTryCount = tryCount;
        }

        #endregion 设置最大重试次数

        #region 是否需要重试

        public bool IsRetry()
        {
            if (RunResult || CurrentTryCount == MaxTryCount)
                return false;
            else
            {
                RunResult = true;
                return true;
            }
        }

        #endregion 是否需要重试

        #region 获取当前重试次数

        public uint GetCurrentTryCount()
        {
            return CurrentTryCount + 1;
        }

        #endregion 获取当前重试次数

        #region 重试

        public void RetryHandle()
        {
            RunResult = false;
            CurrentTryCount++;
        }

        #endregion 重试

        #endregion 方法
    }

模式使用

 var retryPt = new RetryPattern();
            retryPt.SetMaxCount(5);

            do
            {
                try
                {
                    if (retryPt.GetCurrentTryCount() > 2)
                        System.Console.WriteLine("方法2");
                    else
                        System.Console.WriteLine("方法1");

                    throw new System.Exception();
                }
                catch
                {
                    retryPt.RetryHandle();
                }
            } while (retryPt.IsRetry());

 

posted @ 2021-08-27 14:04  慢慢zero  阅读(622)  评论(0编辑  收藏  举报