Я не уверен, что это будет конкретная вещь с jsoncpp или общей парадигмой, как заставить C++-библиотеку вести себя лучше. В основном я получаю этот след:Более грациозная обработка ошибок в C++-библиотеке - jsoncpp
imagegeneratormanager.tsk: src/lib_json/json_value.cpp:1176: const Json::Value& Json::Value::operator[](const char*) const: Assertion `type_ == nullValue || type_ == objectValue' failed.
Это происходит, когда ввод плох. Когда вход - который поступает из другого приложения моего через memcached - оказывается плохой, я хотел бы обработать эту ошибку. Вы знаете, изящно. Возможно, что-то вроде «ошибка: вход для элемента 15006 - это плохо», идущий в журнал. Не сбой всей моей задачи обработки строк JSON.
Это просто плохо написанная библиотека или можно настроить ее более тонко?
Edit: вот некоторый код вызова:
Json::Value root;
Json::Reader reader;
succeeded = reader.parse(jsonString, root);
if(!succeeded) {
throw std::runtime_error(std::string("Failed to parse JSON for key ") + emailInfoKey.str());
}
std::string userEmail = root.get("userId", "").asString();
std::string bodyFilePath = root.get("bodyFilePath", "").asString();
std::string msgId = root.get("msgId", "").asString();
Вы не можете проверить тип элемента? –
Может быть? Я не знаю, возникает ли эта ошибка из моей строки синтаксического анализа или моей линии доступа, потому что это не похоже на то, что утверждения дают вам стек вызовов или настраиваемое сообщение об ошибке или что-то еще. – djechlin
Вы вызываете 'operator []' на значение, например int или строку. –