У нас есть требование разбора/проверки большого количества строк, считанных из файлов CSV или Excel. Мы читаем строку и применяем бизнес-правила, чтобы проверить, содержат ли все ячейки/столбцы действительные данные.Правильный способ обработки ошибок и продолжения работы
Приложение должно продолжать проверять записи/столбцы до конца, даже если при ошибке или столбце возникает некоторая ошибка. В настоящее время мы будем так:
private void ValidateRow(RowObject obj)
{
try
{
foreach(var col in obj.Cells)
{
ValidateColumn(col);
}
}
catch(Exception ex)
{
//LOG ERROR
}
}
Столбцы Подтверждает так:
public void ValidateColumn(ColumnObject c)
{
try
{
//validate c
}
catch(Exception e)
{
//LOG Column Error
}
}
Мы регулируем ошибку в двух местах при проверке строк (ValidateRow
), а затем для каждого столбца (ValidateColumn
). Мой вопрос заключается в том, является ли это правильным или оптимальным способом обработки ошибок или что-то более оптимальное?
Ошибки проверки не выглядят как * исключительные * условия. Скорее, кажется, что вы * ожидаете, что некоторые данные могут быть недействительными, поэтому у вас есть методы 'Validate'. Поэтому кажется, что использование исключений в первую очередь - плохой дизайн. –
Вы действительно хотите обрабатывать все исключения? Как насчет 'OutOfMemoryException',' TypeLoadException' и 'AppDomainUnloadedException' например? –
@CodyGray Цель состоит в том, что даже если любой вызов 'ValidateColumn' или' ValidateRow' не работает, программа должна продолжить следующую строку. Да, я сомневаюсь в этом дизайне, что является основной причиной, по которой я его раскрываю. – TheVillageIdiot