internal void ModifySensitivityLabels(SensitivityClassificationModel model, Action <SensitivityLabelModel> modifySensitivityLabel) { ConcurrentQueue <Exception> exceptions = new ConcurrentQueue <Exception>(); Parallel.ForEach <SensitivityLabelModel>(model.SensitivityLabels, sensitivityLabelModel => { try { modifySensitivityLabel(sensitivityLabelModel); } catch (Exception e) { exceptions.Enqueue(e); } }); if (!exceptions.IsEmpty) { int exceptionsCount = exceptions.Count; Exception lastException = exceptions.Last(); throw (exceptionsCount == 1) ? lastException : new Exception($"Operation failed for {exceptionsCount} sensitivity classifications", lastException); } }
internal void ModifySensitivityLabels(SensitivityClassificationModel model, Action <SensitivityLabelModel> modifySensitivityLabel) { int failuresNumber = 0; Exception exception = null; foreach (SensitivityLabelModel sensitivityLabelModel in model.SensitivityLabels) { try { modifySensitivityLabel(sensitivityLabelModel); } catch (Exception e) { exception = e; failuresNumber++; } } if (failuresNumber > 0) { throw (failuresNumber == 1) ? exception : new Exception($"Operation failed for {failuresNumber} sensitivity classifications", exception); } }