Skip to content
Permalink
Browse files

Add exception handler for all events. This will catch uncaught except…

…ions 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
  • Loading branch information
telwertowski
telwertowski committed Sep 13, 2008
1 parent 2392cd4 commit b254446bf833b57980a62f97d6563bf7cae6c508
Showing with 20 additions and 3 deletions.
  1. +17 −3 src/core/qgsapplication.cpp
  2. +3 −0 src/core/qgsapplication.h
@@ -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 + "/"

0 comments on commit b254446

Please sign in to comment.
You can’t perform that action at this time.