Я читаю данные из файла и создаю объекты на основе этих данных. Формат данных не под моим контролем и иногда поврежден. Каков наиболее подходящий способ обработки этих ошибок при построении объектов в С#?
В других языках программирования я вернул нуль, но это не похоже на вариант с С#.
Мне удалось выяснить следующие параметры, но я был бы признателен за советы от более опытных программистов на С#:
Вариант 1. Прочитайте файл внутри конструктора и выбросите исключение, когда исходные данные повреждены:
try
{
obj = Constructor(sourceFile);
... process object ...
}
catch (IOException ex)
{
...
}
Вариант 2. Создайте объект, затем используйте метод для чтения данных из исходного файла:
obj = Constructor();
obj.ReadData(sourceFile);
if (obj.IsValid)
{
... process object ...
}
или, возможно, исключить ошибки при ошибке:
obj = Constructor();
try
{
obj.Read(sourceFile);
... process object ...
}
catch
{
...
}
Вариант 3. Создайте объект с помощью статического метода TryParse:
if (ObjClass.TryParse(sourceFile, out obj))
{
... process object ...
}
и если да, то должен ли я реализовать вариант 3 внутренне с помощью опции 1?
public static bool TryParse(FileStream sourceFile, out ObjClass obj)
{
try
{
obj = Constructor(sourceFile);
return true;
}
catch (IOException ex)
return false;
}