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());
原文:https://www.cnblogs.com/slowzero/p/15193522.html