diff --git a/src/ifcgeom_schema_agnostic/IfcGeomIterator.h b/src/ifcgeom_schema_agnostic/IfcGeomIterator.h index 50d15c1917..58a2b21d1b 100644 --- a/src/ifcgeom_schema_agnostic/IfcGeomIterator.h +++ b/src/ifcgeom_schema_agnostic/IfcGeomIterator.h @@ -87,7 +87,12 @@ namespace IfcGeom { : file_(file) , settings_(settings) { - implementation_ = iterator_implementations
().construct(file_->schema()->name(), settings, file, filters_, num_threads); + try { + implementation_ = iterator_implementations
().construct(file_->schema()->name(), settings, file, filters_, num_threads);
+ } catch (const std::exception& e) {
+ Logger::Error(e);
+ implementation_ = nullptr;
+ }
}
Iterator(const IfcGeom::IteratorSettings& settings, IfcParse::IfcFile* file, const std::vector ().construct(file_->schema()->name(), settings, file, filters_, num_threads);
+ try {
+ implementation_ = iterator_implementations ().construct(file_->schema()->name(), settings, file, filters_, num_threads);
+ } catch (const std::exception& e) {
+ Logger::Error(e);
+ implementation_ = nullptr;
+ }
}
bool initialize() {
- return implementation_->initialize();
+ if (implementation_) {
+ return implementation_->initialize();
+ } else {
+ return false;
+ }
}
int progress() const { return implementation_->progress(); }