diff --git a/App/main.cpp b/App/main.cpp
index e9fcf9b959faef10283bba009669c87268eb17c1..38683caf7589cdcca03f1ed07dd04ca50d923eb1 100644
--- a/App/main.cpp
+++ b/App/main.cpp
@@ -71,7 +71,7 @@ int main(int argc, char* argv[])
                            QString("Sorry, you encountered a fatal bug.\n"
                                    "The application will terminate.\n"
                                    "Please note the following and inform the maintainers.\n\n")
-                           + ex.what() + "\n",
+                               + ex.what() + "\n",
                            QMessageBox::Ok, nullptr);
         msgbox.exec();
         return 1;
diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp
index 9c77c97636cca313772b538174a9adc391dbddea..5ec6f6ff8fb3f55b5fa6c1a9fd7d81556d510804 100644
--- a/GUI/Model/Data/DataItem.cpp
+++ b/GUI/Model/Data/DataItem.cpp
@@ -135,9 +135,18 @@ void DataItem::saveDatafield(const QString& projectDir) const
     };
 
     if (m_saveInBackground) {
-        auto* saveThread = QThread::create(saveLambda);
-        connect(saveThread, &QThread::finished, saveThread, &QObject::deleteLater);
-        saveThread->start();
+        std::string errorMessage;
+        auto* saveThread = new std::thread([&errorMessage, saveLambda]() {
+            try {
+                saveLambda();
+            } catch (const std::exception& ex) {
+                errorMessage = ex.what();
+            }
+        });
+        saveThread->join();
+
+        if (!errorMessage.empty())
+            throw std::runtime_error(errorMessage);
     } else
         saveLambda();