mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
Add exception handler for all events. This will catch uncaught exceptions thrown by event handlers and display an alert instead of crashing. Improvement, not fix, for #1308 and #1268.
git-svn-id: http://svn.osgeo.org/qgis/trunk@9319 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
parent
2392cd4d5d
commit
b254446bf8
@ -19,11 +19,10 @@
|
||||
#include "qgsproviderregistry.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QMessageBox>
|
||||
#include <QPalette>
|
||||
|
||||
#include <qgsconfig.h>
|
||||
|
||||
#include <iostream>
|
||||
#include "qgsconfig.h"
|
||||
|
||||
// for htonl
|
||||
#ifdef WIN32
|
||||
@ -68,6 +67,21 @@ QgsApplication::QgsApplication( int & argc, char ** argv, bool GUIenabled )
|
||||
QgsApplication::~QgsApplication()
|
||||
{}
|
||||
|
||||
bool QgsApplication::notify( QObject * receiver, QEvent * event )
|
||||
{
|
||||
// Send event to receiver and catch unhandled exceptions
|
||||
bool done = true;
|
||||
try
|
||||
{
|
||||
done = QApplication::notify( receiver, event );
|
||||
}
|
||||
catch ( std::exception & e )
|
||||
{
|
||||
QMessageBox::critical( activeWindow(), tr( "Exception" ), e.what() );
|
||||
}
|
||||
return done;
|
||||
}
|
||||
|
||||
void QgsApplication::setPrefixPath( const QString thePrefixPath, bool useDefaultPaths )
|
||||
{
|
||||
mPrefixPath = thePrefixPath;
|
||||
|
@ -28,6 +28,9 @@ class CORE_EXPORT QgsApplication: public QApplication
|
||||
QgsApplication( int & argc, char ** argv, bool GUIenabled );
|
||||
virtual ~QgsApplication();
|
||||
|
||||
//! Catch exceptions when sending event to receiver.
|
||||
virtual bool notify( QObject * receiver, QEvent * event );
|
||||
|
||||
/** Set the active theme to the specified theme.
|
||||
* The theme name should be a single word e.g. 'default','classic'.
|
||||
* The theme search path usually will be pkgDataPath + "/themes/" + themName + "/"
|
||||
|
Loading…
x
Reference in New Issue
Block a user