С++ аварийный выход из конструктора

199
10 ноября 2017, 09:42

Можно ли во время создания объекта, при сбое в конструкторе завершить его без создания объекта и оповестить об этом программу?

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, но не могу найти явную информацию как он работает в конструкторе.

Answer 1

Вообще-то генерация исключения в конструкторе и означает, что объект не создан...

Само собой, все действия по очистке уже сделанного в конструкторе вы должны выполнить самостоятельно.

READ ALSO
QMediaMetaData возвращает пустое значение

QMediaMetaData возвращает пустое значение

Есть две взаимосвязанные функции, collectInfo()

229
удаления из списка элементов класса list<classT> С++

удаления из списка элементов класса list<classT> С++

здраствуйте, есть список с элементов класса код класса:

216
Вывод данных из БД в TableView(Qt)

Вывод данных из БД в TableView(Qt)

Здравствуйте, стал изучить работу с БД в Qt creator

446
Указатель this c++

Указатель this c++

Добрый вечерУ меня такой вопрос, недавно лазил в инете и наткнулся на такой код: return*this*Fraction(fra

270