diff --git a/components/CLParser/include/Modelec/CLParser.h b/components/CLParser/include/Modelec/CLParser.h index 2483605..49705a0 100644 --- a/components/CLParser/include/Modelec/CLParser.h +++ b/components/CLParser/include/Modelec/CLParser.h @@ -19,7 +19,24 @@ public: return defaultValue; } - return static_cast(std::stod(_options.at(option))); + try { + return static_cast(std::stod(_options.at(option))); + } catch (std::exception& e) { + return defaultValue; + } + } + + template + [[nodiscard]] std::optional getOption(const std::string& option) const { + if (!hasOption(option)) { + return std::nullopt; + } + + try { + return static_cast(std::stod(_options.at(option))); + } catch (std::exception& e) { + return std::nullopt; + } } [[nodiscard]] std::optional getOption(const std::string& option) const;