Однажды я поговорил с разработчиками программного обеспечения, которые разрабатывали на eCos проект C ++ и не имели исключений C ++, поддерживаемых компилятором.В результате они не использовали бросающие исключения в конструкторах.
Их подход состоял в том, чтобы использовать простые конструкторы, подобные этому
Date::Date()
:
initialized_ (false)
{}
, а затем всегда использовалась функция init
:
bool Date::init(int day, int month, int year)
{
// return false if there is an error while initializing the object
// return true if there is no error
initialized_ = true;
}
Они всегда проверяли результат init()
функций.