From 1bd08a121bea302b87ec8e72af8eda66b52bba10 Mon Sep 17 00:00:00 2001
From: Fabian Peller <fabian.peller-konrad@kit.edu>
Date: Tue, 7 Mar 2023 09:53:52 +0000
Subject: [PATCH] better exception message in visitors

---
 .../aron/core/data/visitor/RecursiveVisitor.h | 24 ++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/source/RobotAPI/libraries/aron/core/data/visitor/RecursiveVisitor.h b/source/RobotAPI/libraries/aron/core/data/visitor/RecursiveVisitor.h
index 60cb4be0f..b9a817f59 100644
--- a/source/RobotAPI/libraries/aron/core/data/visitor/RecursiveVisitor.h
+++ b/source/RobotAPI/libraries/aron/core/data/visitor/RecursiveVisitor.h
@@ -57,7 +57,17 @@ namespace armarx::aron::data
         virtual void visitDouble(Input& element) {};
         virtual void visitBool(Input& element) {};
         virtual void visitString(Input& element) {};
-        virtual void visitUnknown(Input& element) { throw error::AronException(__PRETTY_FUNCTION__, "Unknown type in visitor."); }
+        virtual void visitUnknown(Input& element)
+        {
+            if (!element)
+            {
+                throw error::AronException(__PRETTY_FUNCTION__, "Unknown type in visitor. The element was NULL.");
+            }
+            else
+            {
+                throw error::AronException(__PRETTY_FUNCTION__, "Unknown type in visitor. The element was set but descriptor was undefined.");
+            }
+        }
         virtual ~RecursiveVisitor() = default;
     };
 
@@ -108,8 +118,16 @@ namespace armarx::aron::data
         virtual void visitBool(DataInput& elementData, TypeInput& elementType) {};
         virtual void visitString(DataInput& elementData, TypeInput& elementType) {};
         virtual void visitAnyObject(DataInput& elementData, TypeInput& elementType) {};
-        virtual void visitUnknown(DataInput& elementData, TypeInput& elementType) {
-            throw error::AronException(__PRETTY_FUNCTION__, "Unknown type in visitor.");
+        virtual void visitUnknown(DataInput& elementData, TypeInput& elementType)
+        {
+            if (!elementData)
+            {
+                throw error::AronException(__PRETTY_FUNCTION__, "Unknown type in visitor. The element was NULL.");
+            }
+            else
+            {
+                throw error::AronException(__PRETTY_FUNCTION__, "Unknown type in visitor. The element was set but descriptor was undefined.");
+            }
         }
         virtual ~RecursiveTypedVisitor() = default;
     };
-- 
GitLab