diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/utils/LazyPathHandler.java b/datamover/source/java/ch/systemsx/cisd/datamover/utils/LazyPathHandler.java
index e99308d2ab8a6ceb2a28476be9a9dafad222dcff..3d5c8c33dc93aefc626401434c3d6092ef67ef6b 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/utils/LazyPathHandler.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/utils/LazyPathHandler.java
@@ -73,21 +73,28 @@ public class LazyPathHandler implements ITerminable, IPathHandler
         @Override
         public void run()
         {
-            while (terminate == false)
+            try
             {
-                try
+                while (terminate == false)
                 {
-                    File resource = queue.take(); // blocks if empty
-                    boolean ok = handler.handle(resource);
-                    logHandlingResult(resource, ok);
-                } catch (InterruptedException ex)
-                {
-                    if (!terminate)
+                    try
+                    {
+                        File resource = queue.take(); // blocks if empty
+                        boolean ok = handler.handle(resource);
+                        logHandlingResult(resource, ok);
+                    } catch (InterruptedException ex)
                     {
-                        operationLog.info("Processing was unexpectedly interrupted. Thread stops.");
+                        if (!terminate)
+                        {
+                            operationLog.info("Processing was unexpectedly interrupted. Thread stops.");
+                        }
+                        return;
                     }
-                    return;
                 }
+            } catch (Exception ex)
+            {
+                // Just log it but ensure that the thread won't die.
+                notificationLog.error("An exception has occurred. (thread still running)", ex);
             }
         }