From feb2928cb7d990b15fb52078c6cc1de914984164 Mon Sep 17 00:00:00 2001
From: Rob Applin <robert.applin@stfc.ac.uk>
Date: Mon, 23 Jul 2018 09:59:39 +0100
Subject: [PATCH] refs #22524 Catch unfound workspace error

---
 .../Common/FitPropertyBrowser.h               |  2 ++
 qt/widgets/common/src/FitPropertyBrowser.cpp  | 21 +++++++++++++++----
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/qt/widgets/common/inc/MantidQtWidgets/Common/FitPropertyBrowser.h b/qt/widgets/common/inc/MantidQtWidgets/Common/FitPropertyBrowser.h
index 876966aa87f..b30a3344559 100644
--- a/qt/widgets/common/inc/MantidQtWidgets/Common/FitPropertyBrowser.h
+++ b/qt/widgets/common/inc/MantidQtWidgets/Common/FitPropertyBrowser.h
@@ -408,6 +408,8 @@ protected:
   void doFit(int maxIterations);
   /// Create CompositeFunction from string
   void createCompositeFunction(const QString &str = "");
+  /// Catches unexpected not found exceptions
+  Mantid::API::IFunction_sptr tryCreateFitFunction(const QString &str);
   /// Create CompositeFunction from pointer
   void createCompositeFunction(const Mantid::API::IFunction_sptr func);
 
diff --git a/qt/widgets/common/src/FitPropertyBrowser.cpp b/qt/widgets/common/src/FitPropertyBrowser.cpp
index 60ed90ca9ad..6564f0ae72e 100644
--- a/qt/widgets/common/src/FitPropertyBrowser.cpp
+++ b/qt/widgets/common/src/FitPropertyBrowser.cpp
@@ -788,8 +788,7 @@ void FitPropertyBrowser::createCompositeFunction(const QString &str) {
   if (str.isEmpty()) {
     createCompositeFunction(Mantid::API::IFunction_sptr());
   } else {
-    auto f = Mantid::API::FunctionFactory::Instance().createInitialized(
-        str.toStdString());
+    auto f = tryCreateFitFunction(str);
     if (f) {
       createCompositeFunction(f);
     } else {
@@ -798,6 +797,20 @@ void FitPropertyBrowser::createCompositeFunction(const QString &str) {
   }
 }
 
+Mantid::API::IFunction_sptr
+FitPropertyBrowser::tryCreateFitFunction(const QString &str) {
+  try {
+    return Mantid::API::FunctionFactory::Instance().createInitialized(
+        str.toStdString());
+  } catch (const Mantid::Kernel::Exception::NotFoundError &ex) {
+    QMessageBox::critical(
+        this, "Mantid - Error",
+        "A workspace provided in the function does not exist:\n" +
+            QString(ex.what()));
+    return nullptr;
+  }
+}
+
 void FitPropertyBrowser::popupMenu(const QPoint &) {
   QtBrowserItem *ci = m_browser->currentItem();
   if (!ci)
@@ -2778,8 +2791,8 @@ void FitPropertyBrowser::setupMultifit() {
           }
         }
         QString wsParam = ",WSParam=(WorkspaceIndex=" + QString::number(i);
-        wsParam += ",StartX=" + QString::number(startX()) + ",EndX=" +
-                   QString::number(endX()) + ")";
+        wsParam += ",StartX=" + QString::number(startX()) +
+                   ",EndX=" + QString::number(endX()) + ")";
         funIni += fun1Ini + ",Workspace=" + wsName + wsParam + ";";
       }
       if (!tieStr.isEmpty()) {
-- 
GitLab