Сохранить метод, выполняющийся после выдачи исключения c # - PullRequest
0 голосов
/ 02 ноября 2018

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

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Похоже, у вас есть такой код ....

foreach(var record in records)
{
    bool valid = Validate(record);

    if(!valid)
    {
        throw new Exception("Record was invalid!");
    }
}

Вместо этого вы должны сделать это так:

var validationErrors = new List<ValidationError>();

foreach(var record in records)
{
    ValidationResult validationResult = Validate(record);

    if(!validationResult.Valid)
    {
        validationErrors.Add(validationResult.ValidationError);
        continue;
    }
}

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

0 голосов
/ 02 ноября 2018

Очень просто, поместите свой блок try / catch в цикл, в котором вы читаете элементы.

Другим вариантом, возможно, лучше, чем полагаться на исключения, может быть написание функции «validate ()».

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