public OperationRetryManagerResult(OperationRetryManagerResultCode resultCode, Exception ex) { if (ex == null && resultCode != OperationRetryManagerResultCode.Success) { throw new ArgumentNullException("ex", "ex can't be null if resultCode != ResultCode.Success"); } this.resultCode = resultCode; this.exception = ex; }
protected override OperationRetryManagerResult InternalTryRun(Action operation) { OperationRetryManagerResult result = OperationRetryManagerResult.Success; Action operationToRun = operation; CommonUtils.ProcessKnownExceptionsWithoutTracing(delegate { this.Run(operationToRun); }, delegate(Exception exception) { this.logger.Log(MigrationEventType.Verbose, exception, "Error running operation {0}.", new object[] { operation.Method.Name }); OperationRetryManagerResultCode resultCode = CommonUtils.IsTransientException(exception) ? OperationRetryManagerResultCode.RetryableError : OperationRetryManagerResultCode.PermanentError; result = new OperationRetryManagerResult(resultCode, exception); return(true); }); return(result); }