Можно ли во время создания объекта, при сбое в конструкторе завершить его без создания объекта и оповестить об этом программу?
serialPort::serialPort(LPSTR serialName)
{
HANDLE serialDesc;
// COM openning
serialDesc = CreateFile(serialName, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL);
if (serialDesc == INVALID_HANDLE_VALUE)
{
// сделать что-то, что бы объект не создавался и оповестить программу
}
}
Мне в голову приходят только передача указателя на внешнюю структуру с последующей проверкой, или содержать дополнительную переменную в классе, которую так же придется проверять извне.
Еще прочитал про try-throw-catch, но не могу найти явную информацию как он работает в конструкторе.
Ответ
Вообще-то генерация исключения в конструкторе и означает, что объект не создан...
Само собой, все действия по очистке уже сделанного в конструкторе вы должны выполнить самостоятельно.
Комментариев нет:
Отправить комментарий