Russian Qt Forum

Qt => Общие вопросы => Тема начата: spectre71 от Апрель 21, 2010, 16:23



Название: Не ловится throw в QT 4.6(Windows)
Отправлено: spectre71 от Апрель 21, 2010, 16:23
Простое окно с кнопкой
На нажатие кнопки кидаем исключение:

Цитировать
void MainWindow::on_pushButton_clicked()
{
    throw 0;
}

Ловим исключение в main:

Код:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
   try {
     return a.exec();
   } catch (...) {
     QMessageBox::critical(0, QObject::tr("Application error"), "ERROR");
   }
   return 1;
}

Все отлично ловится в QT 4.5.2
(http://good.png)

Однако не ловится в QT 4.6.2
(http://bad.png)

В чем проблема?
Очередной прикол троллей?

Исходники для проверки приаттачены.


Название: Re: Не ловится throw в QT 4.6
Отправлено: BRE от Апрель 21, 2010, 16:41
Linux, qt-4.6.2-8.fc11.x86_64

Открывает окно ERROR.

В консоли стандартная фраза:  :)
Qt has caught an exception thrown from an event handler. Throwing
exceptions from an event handler is not supported in Qt. You must
reimplement QApplication::notify() and catch all exceptions there.


Название: Re: Не ловится throw в QT 4.6(Windows)
Отправлено: spectre71 от Апрель 21, 2010, 17:42
Спасибо BRE


Название: Re: Не ловится throw в QT 4.6(Windows)
Отправлено: viktor.kz от Апрель 22, 2010, 10:34
Qt 4.6.0 + Windows 7 = всё ловится


First-chance exception at 0x75b99617 in throw_test.exe: Microsoft C++ exception: int at memory location 0x0015b814..
First-chance exception at 0x75b99617 in throw_test.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
First-chance exception at 0x75b99617 in throw_test.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
Qt has caught an exception thrown from an event handler. Throwing
exceptions from an event handler is not supported in Qt. You must
reimplement QApplication::notify() and catch all exceptions there.