Viji
@Viji
DevOps Engineer

Как отловить ошибку в Mappere?

Есть простой код, реальный код сложнее, там DBContext - но принцип тот же

var vals = new List<int> { 1, 2, 3, 4, 5, 6, 0,11 };
var res = vals.Select(e => 2000/e);

Как можно отловить ошибку mappinga Select и узнать какой элемент массива дает такую ошибку? Или надо писать через foreach например?
  • Вопрос задан
  • 62 просмотра
Решения вопроса 3
Комментировать
vabka
@vabka Куратор тега .NET
Токсичный шарпист
Если идёт работа с dbcontext (IQueryable), то маппинг будет происходить на стороне базы данных => никаким способом не проверить.

Если работаешь с IEnumerable, то в Select ты можешь прокинуть номер элемента (второй параметр лямбды), и сделать любые проверки через if или try-catch
Ответ написан
Комментировать
Planet_93
@Planet_93
В Select вы проходите по элементам массива.
Вы можете в блок Select добавить блок Try/Catch.

var vals = new List<int> { 1, 2, 3, 4, 5, 6, 0,11 };
var res = vals.Select(e => 
  {
    try
    {
      return (e => 2000/e));
    }
    catch(Exception)
    {
      return 0;
    }
  });


Другие варианты решения можете посмотреть здесь.

Хотя в вашем примере будет достаточно проверить деление на ноль.
var vals = new List<int> { 1, 2, 3, 4, 5, 6, 0, 11 };
var res = vals.Select(e => e == 0 ? 0 : 2000 / e);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы