Задать вопрос
ADR
@ADR
Delphi, Python, LabView, C, electronic, Qt/C++

Как сделать try finally в С++?

В Microsoft Visual C++ и CBuilder есть __finally.
А есть такое от Qt или в GNU C++?

Как вообще можно написать такое без finally?
class SampleLoader : public QObject
{
    Q_OBJECT
public:
    explicit SampleLoader(QObject *parent = 0);
    void load(QString sampleParameter);
 
signals:
    void workBeginEvent(int stepsCount);
    void workEvent(int step);
    void workEndEvent(bool sampleResult);
 
public slots:
};
 
void SampleLoader::load(QString sampleParameter)
{
    int count = 10;
    bool someResult = false;
    emit workBeginEvent(count);
    try 
    {
        for(int i = 0; i < count; i++)
        {
            QTest::qSleep(100); // hard work
            emit workEvent(i);
        }
        someResult = true;
    }
    finally
    {
        emit workEndEvent(someResult);
    }
}
  • Вопрос задан
  • 6873 просмотра
Подписаться 2 Оценить Комментировать
Ответ пользователя Яков Е К ответам на вопрос (4)
Zifix
@Zifix Куратор тега Qt
Barbatum
Не нужно тянуть исключения в C++, тем более для таких тривиальных ситуаций. Они тут медленные и опасные, Qt совершенно спокойно обходится без них.
Ответ написан