diff --git a/src/core/processing/qgsprocessingalgorithm.cpp b/src/core/processing/qgsprocessingalgorithm.cpp index 68428f2d92d..5f5370dc510 100644 --- a/src/core/processing/qgsprocessingalgorithm.cpp +++ b/src/core/processing/qgsprocessingalgorithm.cpp @@ -334,10 +334,17 @@ QVariantMap QgsProcessingAlgorithm::run( const QVariantMap ¶meters, QgsProce if ( !res ) return QVariantMap(); - QVariantMap runRes = alg->runPrepared( parameters, context, feedback ); - - if ( !alg->mHasExecuted ) + QVariantMap runRes; + try + { + runRes = alg->runPrepared( parameters, context, feedback ); + } + catch ( QgsProcessingException &e ) + { + QgsMessageLog::logMessage( e.what(), QObject::tr( "Processing" ), QgsMessageLog::CRITICAL ); + feedback->reportError( e.what() ); return QVariantMap(); + } if ( ok ) *ok = true; @@ -410,17 +417,15 @@ QVariantMap QgsProcessingAlgorithm::runPrepared( const QVariantMap ¶meters, } return runResults; } - catch ( QgsProcessingException &e ) + catch ( QgsProcessingException & ) { - QgsMessageLog::logMessage( e.what(), QObject::tr( "Processing" ), QgsMessageLog::CRITICAL ); - feedback->reportError( e.what() ); - if ( mLocalContext ) { // see above! mLocalContext->pushToThread( context.thread() ); } - return QVariantMap(); + //rethrow + throw; } } diff --git a/src/core/processing/qgsprocessingalgrunnertask.cpp b/src/core/processing/qgsprocessingalgrunnertask.cpp index 4ea72fa33bb..8677f5d6234 100644 --- a/src/core/processing/qgsprocessingalgrunnertask.cpp +++ b/src/core/processing/qgsprocessingalgrunnertask.cpp @@ -52,8 +52,10 @@ bool QgsProcessingAlgRunnerTask::run() mResults = mAlgorithm->runPrepared( mParameters, mContext, mFeedback ); ok = true; } - catch ( QgsProcessingException & ) + catch ( QgsProcessingException &e ) { + QgsMessageLog::logMessage( e.what(), QObject::tr( "Processing" ), QgsMessageLog::CRITICAL ); + mFeedback->reportError( e.what() ); return false; } return ok && !mFeedback->isCanceled();