[*] Если функция не может выполнить свою назначенную задачу, она может сигнализировать о нем, выбрасывая исключение, < /li>
При написании функции необходимо убедиться, что это исключение, т.е. Гарантия),
Если это актуально, напишите try /
Код: Выделить всё
catchКод: Выделить всё
catchКод: Выделить всё
#include
#include
using RelevantInfo = std::map;
void parseConfField(RelevantInfo& info, JsonObject field)
{
// at() throws std::invalid_argument if it cannot find a subobject with the expected name
auto const name = field.at("name");
auto const value = field.at("value");
// The map throws std::bad_alloc if the system is out of memory
// as_double() throws std::invalid_argument if value is not convertible to double
info[name.as_string()] = value.as_double();
}
void parseConfFile(RelevantInfo& info, char const* fileName)
{
// open() throws std::invalid_argument if the file does not exist or does not have proper JSON syntax
auto const loadedConf = somelibrary::open(fileName);
// as_array() throws std::invalid_argument if loadedConf is not an array
for (auto const& confField : loadedConf.as_array())
{
parseConfField(info, confField);
}
}
void parseAllConf()
{
RelevantInfo info;
parseConfFile(info, "a.json");
parseConfFile(info, "b.json");
parseConfFile(info, "c.json");
}
Код: Выделить всё
catchПодробнее здесь: https://stackoverflow.com/questions/796 ... g-from-thi
Мобильная версия