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& filters, size_t num_threads = 1) @@ -95,11 +100,20 @@ namespace IfcGeom { , settings_(settings) , filters_(filters) { - 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; + } } bool initialize() { - return implementation_->initialize(); + if (implementation_) { + return implementation_->initialize(); + } else { + return false; + } } int progress() const { return implementation_->progress(); }