Нужно выдать исключение, если значение равно нулю, а затем продолжить цикл после исключения - PullRequest
0 голосов
/ 30 октября 2019

У меня есть список, и список содержит имя пользователя и почтовый адрес, а также некоторые другие детали. Поэтому я хочу просмотреть все данные и выдать исключение, если какое-либо значение в списке содержит почту пустую или пустую, а затем записать это в базу данных и затем продолжить цикл оттуда.

В настоящее время мой код останавливаетсякогда я выбрасываю исключение.

Я добавил инструкцию else, где он проверяет, имеет ли user.mail значение null, затем выдает исключение, которое работает, но затем после этого код ломается, а другой элемент в списке - нет. получить добавление в базу данных.

foreach (var user in adUsers)
{
    if (!users.Keys.Contains(user.Mail) && user.Mail.EndsWith("@warburgpincus.com"))
        users.Add(user.Mail, new User
        {
            FirstName = user.GivenName,
            LastName = user.Surname,
            Username = user.UserPrincipalName,
            Email = user.Mail,
            IsActive = true,
            Role = adminMembers.Any() && adminMembers.Where(x => x.Mail == user.Mail).Any() ? RoleTypes.AdminUser :
            readOnlyMembers.Any() && readOnlyMembers.Where(x => x.Mail == user.Mail).Any() ? RoleTypes.ReadOnlyUser : RoleTypes.User
        });
    else if (string.IsNullOrEmpty(user.Mail))                
    {            
        throw new ApplicationException($"User {user.GivenName + user.Surname} cannot sync to Quill due to missing email address");            
    }          
}
return users;

Я хочу, чтобы ошибка регистрировалась, а затем просто возвращала список пользователей, и это не должно нарушать внешний вид при возникновении исключения.

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Поместите код внутри для каждого цикла в try catch. А затем зарегистрируйте выброшенное исключение внутри catch. Это не сломает вашу петлю. См. Код ниже:

 foreach (var user in adUsers)
{
    try{
        if (!users.Keys.Contains(user.Mail) && user.Mail.EndsWith("@warburgpincus.com"))
            users.Add(user.Mail, new User
            {
                FirstName = user.GivenName,
                LastName = user.Surname,
                Username = user.UserPrincipalName,
                Email = user.Mail,
                IsActive = true,
                Role = adminMembers.Any() && adminMembers.Where(x => x.Mail == user.Mail).Any() ? RoleTypes.AdminUser :
                readOnlyMembers.Any() && readOnlyMembers.Where(x => x.Mail == user.Mail).Any() ? RoleTypes.ReadOnlyUser : RoleTypes.User
            });

            else if (string.IsNullOrEmpty(user.Mail))        
            {

              throw new ApplicationException($"User {user.GivenName + user.Surname} cannot sync to Quill due to missing email address");
             }
     }
     catch(Exception ex){
        //log exception here.
     }

   }
 return users;
0 голосов
/ 30 октября 2019

Выдача исключения автоматически завершит работу функции немедленно. Если вы хотите зарегистрировать ошибку и продолжить, замените код, выдавший исключение, кодом регистрации. Если вам нужно знать, что произошла ошибка, вы всегда можете установить переменную и вызвать исключение позже, но несколько пользователей могут существовать без адресов электронной почты. Вы можете добавить недопустимых пользователей во второй список для составления отчетов в зависимости от контекста, который вы вызываете вышеупомянутой функцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...