From 88d3eda4db3a35d5e9bb497be15d3222d8b67dc6 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Wed, 29 Apr 2026 13:39:49 +0200 Subject: [PATCH] JFJochReceiver: Fix exception handling in destructor --- receiver/JFJochReceiverFPGA.cpp | 10 ++++++++-- receiver/JFJochReceiverLite.cpp | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) 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() {