diff --git a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp index 6895cf4e5b27ecec5872a38890d8111b41405fa7..c1ae33fbe624fe2558c8f2dfb11d2ae380fb192a 100644 --- a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp +++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp @@ -99,9 +99,30 @@ namespace armarx::armem::server MemoryToIceAdapter::commit(const data::Commit& commitIce, Time timeArrived) { ARMARX_CHECK_NOT_NULL(workingMemory); + auto handleException = [](const std::string & what) + { + data::CommitResult result; + data::EntityUpdateResult& r = result.results.emplace_back(); + r.success = false; + r.errorMessage = what; + return result; + }; armem::Commit commit; - armem::fromIce(commitIce, commit, timeArrived); + try + { + armem::fromIce(commitIce, commit, timeArrived); + } + catch (const aron::error::AronNotValidException& e) + { + throw; + return handleException(e.what()); + } + catch (const Ice::Exception& e) + { + throw; + return handleException(e.what()); + } armem::CommitResult result = this->commit(commit); data::CommitResult resultIce; @@ -147,6 +168,16 @@ namespace armarx::armem::server result.success = false; result.errorMessage = e.what(); } + catch (const aron::error::AronException& e) + { + result.success = false; + result.errorMessage = e.what(); + } + catch (const Ice::Exception& e) + { + result.success = false; + result.errorMessage = e.what(); + } } if (publishUpdates)