From 24d1e864406a54160be66c6ab3ec9a96be2d0e74 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Thu, 13 Dec 2018 14:36:10 -0500 Subject: [PATCH] Improve "missing key" error message for AnyMap --- src/base/AnyMap.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/base/AnyMap.cpp b/src/base/AnyMap.cpp index 5bf4f4018..1a01b0acf 100644 --- a/src/base/AnyMap.cpp +++ b/src/base/AnyMap.cpp @@ -509,12 +509,16 @@ AnyValue& AnyMap::operator[](const std::string& key) const AnyValue& AnyMap::at(const std::string& key) const { const auto& slash = boost::ifind_first(key, "/"); - if (!slash) { - return m_data.at(key); - } else { - std::string head(key.begin(), slash.begin()); - std::string tail(slash.end(), key.end()); - return m_data.at(head).as().at(tail); + try { + if (!slash) { + return m_data.at(key); + } else { + std::string head(key.begin(), slash.begin()); + std::string tail(slash.end(), key.end()); + return m_data.at(head).as().at(tail); + } + } catch (std::out_of_range& err) { + throw CanteraError("AnyMap::at", "Key '{}' not found", key); } }