Выбор между исключением и возвращаемым значением

Я создал класс, который анализирует какой-то документ из файла.

class Parser
{
  public Parse(string fileName)
  {
    ///
  }
}

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

class ParsingError
{
 // some data
}

Как правильно бороться с такими ошибками. У меня есть как минимум два варианта:

создать собственное исключение или возвращаемое значение.

Вариант первый

myParser.Parse(fileName, out error);

Второй вариант

try
{
  myParser.Parse(fileName)
}

catch(MyParsingException ex)
{
  // use ex.Error field
}

ОБНОВЛЕНИЕ

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

Это заставляет меня задаться вопросом, например:

синтаксический анализатор находит неизвестное поле в файле или кодировка неправильная

будет ли это считаться исключительным случаем?

9
задан shawty 15 March 2017 в 21:25
поделиться