[Interest] App. is running after an exception is thrown.

Karl Ruetz karl.ruetz at ruetzdogz.com
Fri Jul 26 22:37:40 CEST 2013


 

>From the documentation for QCoreApplication::exit: 

"After this
function has been called, the application leaves the main event loop and
returns from the call to exec(). The exec() function returns returnCode.
If the event loop is not running, this function does nothing."


QCoreApplication::quit Equivalent to calling
QCoreApplication::exit(0). Thus your call to a.quit() is doing nothing.


Therefore, there is nothing telling the event loop to stop once it
starts. 

Please NOTE: These commands stop the event loop return to the
caller. They do not immediately exit the application or the caller. So
if you move this call inside the event loop, you will need to return out
of the caller. 

Karl 

On 2013-07-26 14:17, Alexander Syvak wrote: 

>
So the a.exec() enters the event loop. Then the handler
showEvent(QEvent*) is executed. The std::runtime_error is thrown out of
the handler to the point of the previous call. 
> The exception is
caught inside the main() function. The dialog is thus not shown, but
start executing again. 
> 
> 2013/7/26 Constantin Makshin
<cmakshin at gmail.com>
> 
>> QCoreApplication::quit(), being an "alias" to
QCoreApplication::exit(0), does nothing outside an event loop which in
your case is started afterwards. 
>> 
>> On Jul 26, 2013 10:20 PM,
"Alexander Syvak" <alexander.svk at gmail.com> wrote: 
>> 
>>> Hello, after
calling w.show() there's method redefined void
event_dlg::showEvent(QShowEvent *). In this method there's an exception
thrown. The process does not terminate. 
>>> Can anyone througly explain
why is the job running after calling either close() of the only one and
thus the last window (event_dlg w) or quit() of the QApplication a?
>>>

>>> #include "event_dlg.h" 
>>> 
>>> #include <QApplication>
>>> 
>>>
#include <QMessageBox>
>>> 
>>> #include <QDebug>
>>> 
>>> int main(int
argc, char *argv[])
>>> 
>>> {
>>> 
>>> QApplication a(argc, argv);
>>>

>>> event_dlg w;
>>> 
>>> try
>>> 
>>> {
>>> 
>>>
w.set_config_file("./events.xml");
>>> 
>>> w.show();
>>> 
>>> }
>>>

>>> catch ( std::runtime_error & e )
>>> 
>>> {
>>> 
>>> // QMessageBox
msgBox;
>>> 
>>> // msgBox.setText(e.what());
>>> 
>>> //
msgBox.exec();
>>> 
>>> // qDebug() << w.close();
>>> 
>>> a.quit();
>>>

>>> }
>>> 
>>> return a.exec();
>>> 
>>> }
>>> 
>>>
_______________________________________________
>>> Interest mailing
list
>>> Interest at qt-project.org
>>>
http://lists.qt-project.org/mailman/listinfo/interest [1]
>> 
>>
_______________________________________________
>> Interest mailing
list
>> Interest at qt-project.org
>>
http://lists.qt-project.org/mailman/listinfo/interest [1]
> 
>
_______________________________________________
> Interest mailing
list
> Interest at qt-project.org
>
http://lists.qt-project.org/mailman/listinfo/interest [1]




Links:
------
[1]
http://lists.qt-project.org/mailman/listinfo/interest
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20130726/7ef45bd0/attachment.html>


More information about the Interest mailing list