Skip to content

Commit 0156656

Browse files
committedApr 9, 2018
[processing] Throw exceptions when sources/sinks cannot be loaded
Instead of silently indicating algorithm success
1 parent e2bf9b9 commit 0156656

19 files changed

+37
-37
lines changed
 

‎src/analysis/processing/qgsalgorithmbuffer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ QVariantMap QgsBufferAlgorithm::processAlgorithm( const QVariantMap &parameters,
8181
{
8282
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
8383
if ( !source )
84-
return QVariantMap();
84+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
8585

8686
QString dest;
8787
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, source->fields(), QgsWkbTypes::Polygon, source->sourceCrs() ) );
8888
if ( !sink )
89-
return QVariantMap();
89+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );
9090

9191
// fixed parameters
9292
bool dissolve = parameterAsBool( parameters, QStringLiteral( "DISSOLVE" ), context );

‎src/analysis/processing/qgsalgorithmclip.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,17 @@ QVariantMap QgsClipAlgorithm::processAlgorithm( const QVariantMap &parameters, Q
7171
{
7272
std::unique_ptr< QgsFeatureSource > featureSource( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
7373
if ( !featureSource )
74-
return QVariantMap();
74+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
7575

7676
std::unique_ptr< QgsFeatureSource > maskSource( parameterAsSource( parameters, QStringLiteral( "OVERLAY" ), context ) );
7777
if ( !maskSource )
78-
return QVariantMap();
78+
throw QgsProcessingException( QObject::tr( "Could not load source layer for OVERLAY" ) );
7979

8080
QString dest;
8181
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, featureSource->fields(), QgsWkbTypes::multiType( featureSource->wkbType() ), featureSource->sourceCrs() ) );
8282

8383
if ( !sink )
84-
return QVariantMap();
84+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
8585

8686
// first build up a list of clip geometries
8787
QVector< QgsGeometry > clipGeoms;

‎src/analysis/processing/qgsalgorithmdissolve.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ QVariantMap QgsCollectorAlgorithm::processCollection( const QVariantMap &paramet
2828
{
2929
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
3030
if ( !source )
31-
return QVariantMap();
31+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
3232

3333
QString dest;
3434
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, source->fields(), QgsWkbTypes::multiType( source->wkbType() ), source->sourceCrs() ) );
3535

3636
if ( !sink )
37-
return QVariantMap();
37+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
3838

3939
QStringList fields = parameterAsFields( parameters, QStringLiteral( "FIELD" ), context );
4040

‎src/analysis/processing/qgsalgorithmextenttolayer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ QVariantMap QgsExtentToLayerAlgorithm::processAlgorithm( const QVariantMap &para
5353
QString dest;
5454
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, fields, QgsWkbTypes::Polygon, crs ) );
5555
if ( !sink )
56-
return QVariantMap();
56+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
5757

5858
QgsFeature f;
5959
f.setAttributes( QgsAttributes() << 1 );

‎src/analysis/processing/qgsalgorithmextractbyattribute.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ QVariantMap QgsExtractByAttributeAlgorithm::processAlgorithm( const QVariantMap
8585
{
8686
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
8787
if ( !source )
88-
return QVariantMap();
88+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
8989

9090
QString fieldName = parameterAsString( parameters, QStringLiteral( "FIELD" ), context );
9191
Operation op = static_cast< Operation >( parameterAsEnum( parameters, QStringLiteral( "OPERATOR" ), context ) );
@@ -95,7 +95,7 @@ QVariantMap QgsExtractByAttributeAlgorithm::processAlgorithm( const QVariantMap
9595
std::unique_ptr< QgsFeatureSink > matchingSink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, matchingSinkId, source->fields(),
9696
source->wkbType(), source->sourceCrs() ) );
9797
if ( !matchingSink )
98-
return QVariantMap();
98+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
9999

100100
QString nonMatchingSinkId;
101101
std::unique_ptr< QgsFeatureSink > nonMatchingSink( parameterAsSink( parameters, QStringLiteral( "FAIL_OUTPUT" ), context, nonMatchingSinkId, source->fields(),

‎src/analysis/processing/qgsalgorithmextractbyexpression.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,15 @@ QVariantMap QgsExtractByExpressionAlgorithm::processAlgorithm( const QVariantMap
7272
{
7373
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
7474
if ( !source )
75-
return QVariantMap();
75+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
7676

7777
QString expressionString = parameterAsExpression( parameters, QStringLiteral( "EXPRESSION" ), context );
7878

7979
QString matchingSinkId;
8080
std::unique_ptr< QgsFeatureSink > matchingSink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, matchingSinkId, source->fields(),
8181
source->wkbType(), source->sourceCrs() ) );
8282
if ( !matchingSink )
83-
return QVariantMap();
83+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
8484

8585
QString nonMatchingSinkId;
8686
std::unique_ptr< QgsFeatureSink > nonMatchingSink( parameterAsSink( parameters, QStringLiteral( "FAIL_OUTPUT" ), context, nonMatchingSinkId, source->fields(),

‎src/analysis/processing/qgsalgorithmextractbyextent.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ QVariantMap QgsExtractByExtentAlgorithm::processAlgorithm( const QVariantMap &pa
6868
{
6969
std::unique_ptr< QgsFeatureSource > featureSource( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
7070
if ( !featureSource )
71-
return QVariantMap();
71+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
7272

7373
QgsRectangle extent = parameterAsExtent( parameters, QStringLiteral( "EXTENT" ), context, featureSource->sourceCrs() );
7474
bool clip = parameterAsBool( parameters, QStringLiteral( "CLIP" ), context );
@@ -80,7 +80,7 @@ QVariantMap QgsExtractByExtentAlgorithm::processAlgorithm( const QVariantMap &pa
8080
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, featureSource->fields(), outType, featureSource->sourceCrs() ) );
8181

8282
if ( !sink )
83-
return QVariantMap();
83+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
8484

8585
QgsGeometry clipGeom = parameterAsExtentGeometry( parameters, QStringLiteral( "EXTENT" ), context, featureSource->sourceCrs() );
8686

‎src/analysis/processing/qgsalgorithmextractbylocation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ QVariantMap QgsExtractByLocationAlgorithm::processAlgorithm( const QVariantMap &
349349
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, input->fields(), input->wkbType(), input->sourceCrs() ) );
350350

351351
if ( !sink )
352-
return QVariantMap();
352+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
353353

354354
auto addToSink = [&]( const QgsFeature & feature )
355355
{

‎src/analysis/processing/qgsalgorithmextractvertices.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ QVariantMap QgsExtractVerticesAlgorithm::processAlgorithm( const QVariantMap &pa
7070
{
7171
std::unique_ptr< QgsFeatureSource > featureSource( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
7272
if ( !featureSource )
73-
return QVariantMap();
73+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
7474

7575
QgsWkbTypes::Type outputWkbType = QgsWkbTypes::Point;
7676
if ( QgsWkbTypes::hasM( featureSource->wkbType() ) )
@@ -96,7 +96,7 @@ QVariantMap QgsExtractVerticesAlgorithm::processAlgorithm( const QVariantMap &pa
9696
QString dest;
9797
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, outputFields, outputWkbType, featureSource->sourceCrs() ) );
9898
if ( !sink )
99-
return QVariantMap();
99+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
100100

101101
double step = featureSource->featureCount() > 0 ? 100.0 / featureSource->featureCount() : 1;
102102
QgsFeatureIterator fi = featureSource->getFeatures( QgsFeatureRequest() );

‎src/analysis/processing/qgsalgorithmjoinbyattribute.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ QVariantMap QgsJoinByAttributeAlgorithm::processAlgorithm( const QVariantMap &pa
9696
std::unique_ptr< QgsFeatureSource > input( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
9797
std::unique_ptr< QgsFeatureSource > input2( parameterAsSource( parameters, QStringLiteral( "INPUT_2" ), context ) );
9898
if ( !input || !input2 )
99-
return QVariantMap();
99+
throw QgsProcessingException( QObject::tr( "Could not load source layers" ) );
100100

101101
QString field1Name = parameterAsString( parameters, QStringLiteral( "FIELD" ), context );
102102
QString field2Name = parameterAsString( parameters, QStringLiteral( "FIELD_2" ), context );
@@ -105,7 +105,7 @@ QVariantMap QgsJoinByAttributeAlgorithm::processAlgorithm( const QVariantMap &pa
105105
int joinField1Index = input->fields().lookupField( field1Name );
106106
int joinField2Index = input2->fields().lookupField( field2Name );
107107
if ( joinField1Index < 0 || joinField2Index < 0 )
108-
return QVariantMap();
108+
throw QgsProcessingException( QObject::tr( "Invalid join fields" ) );
109109

110110
QgsFields outFields2;
111111
QgsAttributeList fields2Indices;
@@ -139,7 +139,7 @@ QVariantMap QgsJoinByAttributeAlgorithm::processAlgorithm( const QVariantMap &pa
139139
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, outFields,
140140
input->wkbType(), input->sourceCrs() ) );
141141
if ( !sink )
142-
return QVariantMap();
142+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );
143143

144144

145145
// cache attributes of input2

‎src/analysis/processing/qgsalgorithmjoinwithlines.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ QVariantMap QgsJoinWithLinesAlgorithm::processAlgorithm( const QVariantMap &para
9090
std::unique_ptr< QgsFeatureSource > hubSource( parameterAsSource( parameters, QStringLiteral( "HUBS" ), context ) );
9191
std::unique_ptr< QgsFeatureSource > spokeSource( parameterAsSource( parameters, QStringLiteral( "SPOKES" ), context ) );
9292
if ( !hubSource || !spokeSource )
93-
return QVariantMap();
93+
throw QgsProcessingException( QObject::tr( "Could not load source layers" ) );
9494

9595
QString fieldHubName = parameterAsString( parameters, QStringLiteral( "HUB_FIELD" ), context );
9696
int fieldHubIndex = hubSource->fields().lookupField( fieldHubName );
@@ -176,7 +176,7 @@ QVariantMap QgsJoinWithLinesAlgorithm::processAlgorithm( const QVariantMap &para
176176
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, fields,
177177
outType, hubSource->sourceCrs() ) );
178178
if ( !sink )
179-
return QVariantMap();
179+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
180180

181181
auto getPointFromFeature = [hasZ, hasM]( const QgsFeature & feature )->QgsPoint
182182
{

‎src/analysis/processing/qgsalgorithmlineintersection.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,11 @@ QVariantMap QgsLineIntersectionAlgorithm::processAlgorithm( const QVariantMap &p
8080
{
8181
std::unique_ptr< QgsFeatureSource > sourceA( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
8282
if ( !sourceA )
83-
return QVariantMap();
83+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
8484

8585
std::unique_ptr< QgsFeatureSource > sourceB( parameterAsSource( parameters, QStringLiteral( "INTERSECT" ), context ) );
8686
if ( !sourceB )
87-
return QVariantMap();
87+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INTERSECT" ) );
8888

8989
const QStringList fieldsA = parameterAsFields( parameters, QStringLiteral( "INPUT_FIELDS" ), context );
9090
const QStringList fieldsB = parameterAsFields( parameters, QStringLiteral( "INTERSECT_FIELDS" ), context );
@@ -142,7 +142,7 @@ QVariantMap QgsLineIntersectionAlgorithm::processAlgorithm( const QVariantMap &p
142142
QString dest;
143143
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, outFields, QgsWkbTypes::Point, sourceA->sourceCrs() ) );
144144
if ( !sink )
145-
return QVariantMap();
145+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
146146

147147
QgsSpatialIndex spatialIndex( sourceB->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( QgsAttributeList() ).setDestinationCrs( sourceA->sourceCrs(), context.transformContext() ) ), feedback );
148148
QgsFeature outFeature;

‎src/analysis/processing/qgsalgorithmmeancoordinates.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ QVariantMap QgsMeanCoordinatesAlgorithm::processAlgorithm( const QVariantMap &pa
7575
{
7676
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
7777
if ( !source )
78-
return QVariantMap();
78+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
7979

8080
QString weightFieldName = parameterAsString( parameters, QStringLiteral( "WEIGHT" ), context );
8181
QString uniqueFieldName = parameterAsString( parameters, QStringLiteral( "UID" ), context );
@@ -110,7 +110,7 @@ QVariantMap QgsMeanCoordinatesAlgorithm::processAlgorithm( const QVariantMap &pa
110110
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, fields,
111111
QgsWkbTypes::Point, source->sourceCrs() ) );
112112
if ( !sink )
113-
return QVariantMap();
113+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
114114

115115
QgsFeatureIterator features = source->getFeatures( QgsFeatureRequest().setSubsetOfAttributes( attributes ) );
116116

‎src/analysis/processing/qgsalgorithmorderbyexpression.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ QVariantMap QgsOrderByExpressionAlgorithm::processAlgorithm( const QVariantMap &
7171
{
7272
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
7373
if ( !source )
74-
return QVariantMap();
74+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
7575

7676
QString expressionString = parameterAsExpression( parameters, QStringLiteral( "EXPRESSION" ), context );
7777

@@ -81,7 +81,7 @@ QVariantMap QgsOrderByExpressionAlgorithm::processAlgorithm( const QVariantMap &
8181
QString sinkId;
8282
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, sinkId, source->fields(), source->wkbType(), source->sourceCrs() ) );
8383
if ( !sink )
84-
return QVariantMap();
84+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
8585

8686
long count = source->featureCount();
8787
double step = count > 0 ? 100.0 / count : 1;

‎src/analysis/processing/qgsalgorithmremovenullgeometry.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ QVariantMap QgsRemoveNullGeometryAlgorithm::processAlgorithm( const QVariantMap
7272
{
7373
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
7474
if ( !source )
75-
return QVariantMap();
75+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
7676

7777
QString nonNullSinkId;
7878
std::unique_ptr< QgsFeatureSink > nonNullSink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, nonNullSinkId, source->fields(),

‎src/analysis/processing/qgsalgorithmsaveselectedfeatures.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ QVariantMap QgsSaveSelectedFeatures::processAlgorithm( const QVariantMap &parame
7373
QString dest;
7474
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, selectLayer->fields(), selectLayer->wkbType(), selectLayer->sourceCrs() ) );
7575
if ( !sink )
76-
return QVariantMap();
76+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
7777

7878

7979
int count = selectLayer->selectedFeatureCount();

‎src/analysis/processing/qgsalgorithmsplitwithlines.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,19 +69,19 @@ QVariantMap QgsSplitWithLinesAlgorithm::processAlgorithm( const QVariantMap &par
6969
{
7070
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
7171
if ( !source )
72-
return QVariantMap();
72+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
7373

7474
std::unique_ptr< QgsFeatureSource > linesSource( parameterAsSource( parameters, QStringLiteral( "LINES" ), context ) );
7575
if ( !linesSource )
76-
return QVariantMap();
76+
throw QgsProcessingException( QObject::tr( "Could not load source layer for LINES" ) );
7777

7878
bool sameLayer = parameters.value( QStringLiteral( "INPUT" ) ) == parameters.value( QStringLiteral( "LINES" ) );
7979

8080
QString dest;
8181
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, source->fields(),
8282
QgsWkbTypes::multiType( source->wkbType() ), source->sourceCrs() ) );
8383
if ( !sink )
84-
return QVariantMap();
84+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
8585

8686
QgsSpatialIndex spatialIndex;
8787
QMap< QgsFeatureId, QgsGeometry > splitGeoms;

‎src/analysis/processing/qgsalgorithmtransect.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ QVariantMap QgsTransectAlgorithm::processAlgorithm( const QVariantMap &parameter
110110

111111
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
112112
if ( !source )
113-
return QVariantMap();
113+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
114114

115115
QgsExpressionContext expressionContext = createExpressionContext( parameters, context, dynamic_cast< QgsProcessingFeatureSource * >( source.get() ) );
116116

@@ -133,7 +133,7 @@ QVariantMap QgsTransectAlgorithm::processAlgorithm( const QVariantMap &parameter
133133
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, fields,
134134
outputWkb, source->sourceCrs() ) );
135135
if ( !sink )
136-
return QVariantMap();
136+
throw QgsProcessingException( QObject::tr( "Could not create destination layer for OUTPUT" ) );;
137137

138138
QgsFeatureIterator features = source->getFeatures( );
139139

‎src/analysis/processing/qgsalgorithmuniquevalueindex.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ QVariantMap QgsAddUniqueValueIndexAlgorithm::processAlgorithm( const QVariantMap
7979
{
8080
std::unique_ptr< QgsFeatureSource > source( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
8181
if ( !source )
82-
return QVariantMap();
82+
throw QgsProcessingException( QObject::tr( "Could not load source layer for INPUT" ) );
8383

8484
QString newFieldName = parameterAsString( parameters, QStringLiteral( "FIELD_NAME" ), context );
8585
QgsFields fields = source->fields();

0 commit comments

Comments
 (0)
Please sign in to comment.