diff --git a/receiver/JFJochReceiverFPGA.cpp b/receiver/JFJochReceiverFPGA.cpp index 97e534ee..9562577f 100644 --- a/receiver/JFJochReceiverFPGA.cpp +++ b/receiver/JFJochReceiverFPGA.cpp @@ -624,8 +624,14 @@ void JFJochReceiverFPGA::StopReceiver() { } JFJochReceiverFPGA::~JFJochReceiverFPGA() { - if (measurement.valid()) - measurement.get(); + try { + if (measurement.valid()) + measurement.get(); + } catch (const std::exception& e) { + logger.Error("ReceiverFPGA teardown failed: {}", e.what()); + } catch (...) { + logger.Error("ReceiverFPGA teardown failed with unknown exception"); + } } JFJochReceiverOutput JFJochReceiverFPGA::GetFinalStatistics() const { diff --git a/receiver/JFJochReceiverLite.cpp b/receiver/JFJochReceiverLite.cpp index f639b73d..4ae1664c 100644 --- a/receiver/JFJochReceiverLite.cpp +++ b/receiver/JFJochReceiverLite.cpp @@ -84,8 +84,14 @@ JFJochReceiverLite::JFJochReceiverLite(const DiffractionExperiment &in_experimen JFJochReceiverLite::~JFJochReceiverLite() { cancelled = true; - if (measurement.valid()) - measurement.get(); + try { + if (measurement.valid()) + measurement.get(); + } catch (const std::exception& e) { + logger.Error("ReceiverLite teardown failed: {}", e.what()); + } catch (...) { + logger.Error("ReceiverLite teardown failed with unknown exception"); + } } void JFJochReceiverLite::MeasurementThread() {