Catch exception and print out things

release/4.3a0
Frank Dellaert 2025-01-30 00:16:22 -05:00
parent 64d4540e9a
commit e7a68fa6f2
1 changed files with 12 additions and 4 deletions

View File

@ -191,11 +191,19 @@ size_t HybridGaussianConditional::nrComponents() const {
/* *******************************************************************************/
GaussianConditional::shared_ptr HybridGaussianConditional::choose(
const DiscreteValues &discreteValues) const {
auto &[factor, _] = factors()(discreteValues);
if (!factor) return nullptr;
try {
auto &[factor, _] = factors()(discreteValues);
if (!factor) return nullptr;
auto conditional = checkConditional(factor);
return conditional;
auto conditional = checkConditional(factor);
return conditional;
} catch (const std::out_of_range &e) {
GTSAM_PRINT(*this);
GTSAM_PRINT(discreteValues);
throw std::runtime_error(
"HybridGaussianConditional::choose: discreteValues does not contain "
"all discrete parents.");
}
}
/* *******************************************************************************/