diff --git a/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp b/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp index 49bfe419d8a8cf1052fad7e47a0ecba9e355c529..9b6d3f8a1126b667dbc233f1f079052d02e4df5c 100644 --- a/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp +++ b/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp @@ -4,6 +4,7 @@ #include <fstream> #include "../../core/error.h" +#include "ArmarXCore/core/exceptions/LocalException.h" #include <ArmarXCore/core/exceptions/local/ExpressionException.h> #include <RobotAPI/libraries/aron/core/io/dataIO/converter/Converter.h> @@ -103,7 +104,16 @@ namespace armarx::armem::d_ltm void EntityInstance::setTo(const wm::EntityInstance& m) { std::filesystem::path p = _fullPath(); - std::filesystem::create_directories(p); + + try + { + std::filesystem::create_directories(p); + } + catch (...) + { + ARMARX_WARNING << GetHandledExceptionString(); + return; + } std::filesystem::path d = p / (std::string(DATA_FILENAME) + ".json"); diff --git a/source/RobotAPI/libraries/armem/core/diskmemory/EntitySnapshot.cpp b/source/RobotAPI/libraries/armem/core/diskmemory/EntitySnapshot.cpp index 199e4f2c9b9eed9d9b099e773d96ba0a03fd7d16..cc1124ab2335d1acf69550350a0bc980c0af7b7f 100644 --- a/source/RobotAPI/libraries/armem/core/diskmemory/EntitySnapshot.cpp +++ b/source/RobotAPI/libraries/armem/core/diskmemory/EntitySnapshot.cpp @@ -69,7 +69,15 @@ namespace armarx::armem::d_ltm void EntitySnapshot::setTo(const wm::EntitySnapshot& m) { - std::filesystem::create_directories(_fullPath()); + try + { + std::filesystem::create_directories(_fullPath()); + } + catch (...) + { + ARMARX_WARNING << GetHandledExceptionString(); + return; + } // We remove the contente here and reset it with new values _container.clear(); @@ -77,7 +85,15 @@ namespace armarx::armem::d_ltm int i = 0; for (const auto& s : m.instances()) { - std::filesystem::create_directory(_fullPath() / std::to_string(i)); + try + { + std::filesystem::create_directory(_fullPath() / std::to_string(i)); + } + catch (...) + { + ARMARX_WARNING << GetHandledExceptionString(); + continue;; + } auto wms = _container.emplace_back(id().withInstanceIndex(i++)); wms.path = path; diff --git a/source/RobotAPI/libraries/armem/core/diskmemory/ProviderSegment.cpp b/source/RobotAPI/libraries/armem/core/diskmemory/ProviderSegment.cpp index 2d5ed3d4a588827137b33e69ecaec3be1a4c31fc..77d38171c15a0c5b6022c28c8d7ad5ece1a5b62a 100644 --- a/source/RobotAPI/libraries/armem/core/diskmemory/ProviderSegment.cpp +++ b/source/RobotAPI/libraries/armem/core/diskmemory/ProviderSegment.cpp @@ -81,7 +81,18 @@ namespace armarx::armem::d_ltm void ProviderSegment::append(const wm::ProviderSegment& m) { - std::filesystem::create_directories(_fullPath()); + + try + { + std::filesystem::create_directories(_fullPath()); + + } + catch (...) + { + ARMARX_WARNING << GetHandledExceptionString(); + return; + } + TypeIO::writeAronType(_aronType, _fullPath()); for (const auto& [k, s] : m.container()) @@ -92,7 +103,19 @@ namespace armarx::armem::d_ltm } else { - std::filesystem::create_directory(_fullPath() / k); + + try + { + std::filesystem::create_directory(_fullPath() / k); + continue; + + } + catch (...) + { + ARMARX_WARNING << GetHandledExceptionString(); + return; + } + auto wms = _container.emplace(std::make_pair(k, id().withEntityName(k))); wms.first->second.path = path; wms.first->second.append(s);