diff --git a/LCS/Messaging/python/messaging/exceptions.py b/LCS/Messaging/python/messaging/exceptions.py
index 52e023d2145e5775f05296c9a1cef9b48b67654c..003324cc41f1c4ca58597ceb4a02cdc9daee0e96 100644
--- a/LCS/Messaging/python/messaging/exceptions.py
+++ b/LCS/Messaging/python/messaging/exceptions.py
@@ -65,3 +65,15 @@ class MessagingTimeoutError(MessagingError, TimeoutError):
     """
     pass
 
+
+class MessageHandlerError(MessagingError):
+    """
+    raised upon handling a message
+    """
+    pass
+
+class MessageHandlerUnknownSubjectError(MessageHandlerError):
+    """
+    raised upon handling a message with an unknown subject
+    """
+    pass
diff --git a/LCS/Messaging/python/messaging/messagebus.py b/LCS/Messaging/python/messaging/messagebus.py
index 734e5db18de0c723d4ba47c4b9542f827a5e6558..66feb5bad871544098d302401a75b8be9fb11691 100644
--- a/LCS/Messaging/python/messaging/messagebus.py
+++ b/LCS/Messaging/python/messaging/messagebus.py
@@ -1570,6 +1570,9 @@ class BusListener:
                             if isinstance(e, TimeoutError):
                                 logger.error("Handling of %s timed out: %s", lofar_msg, e)
                                 receiver.reject(lofar_msg, requeue=True)
+                            elif isinstance(e, MessageHandlerError):
+                                logger.error("Could not handle message %s: %s", lofar_msg, e)
+                                receiver.reject(lofar_msg, requeue=False)
                             else:
                                 logger.exception("Handling of %s failed. Rejecting message. Error: %s", lofar_msg, e)
                                 receiver.reject(lofar_msg, requeue=False)