diff --git a/MantidPlot/src/ApplicationWindow.cpp b/MantidPlot/src/ApplicationWindow.cpp index f75919758dfb3b38fc21f20275d6f031743ce383..87ba597476c0793c421c451b3b302c695a6cf12b 100644 --- a/MantidPlot/src/ApplicationWindow.cpp +++ b/MantidPlot/src/ApplicationWindow.cpp @@ -16769,11 +16769,24 @@ bool ApplicationWindow::saveProjectRecovery(std::string destination) { } void ApplicationWindow::checkForProjectRecovery() { - if (!m_projectRecovery.checkForRecovery()) { - m_projectRecovery.startProjectSaving(); - return; + if (!m_projectRecovery.checkForRecovery()) { + m_projectRecovery.startProjectSaving(); + return; + } + + // Recovery file present + try { + m_projectRecovery.attemptRecovery(); + } + catch (std::exception &e) { + std::string err{ "Project Recovery failed to recover this checkpoint. Details: " }; + err.append(e.what()); + g_log.error(err); + QMessageBox::information(this, "Could Not Recover", + "We could not fully recover your work.\nMantid will continue to run normally now.", "OK"); + + // Restart project recovery manually + m_projectRecovery.clearAllCheckpoints(); + m_projectRecovery.startProjectSaving(); } - - // Recovery file present - m_projectRecovery.attemptRecovery(); }