Ich bin mir nicht sicher, ob dies eine bestimmte Sache mit Jsoncpp oder ein allgemeines Paradigma mit, wie man eine C++ - Bibliothek besser verhalten wird. Grundsätzlich bekomme ich diese Spur:Anmutige Fehlerbehandlung in C++ - Bibliothek - 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.
Das passiert, wenn der Eingang schlecht ist. Wenn die Eingabe - die von einer anderen Anwendung von mir über memcached kommt - schlecht ist, möchte ich diesen Fehler behandeln. Sie wissen, anmutig. Vielleicht etwas wie "Fehler: Eingabe für Artikel 15006 ist schlecht" zum Log gehen. Kein Absturz meiner gesamten JSON-String-Verarbeitung Aufgabe.
Ist dies nur eine schlecht geschriebene Bibliothek oder ist es möglich, sie subtiler zu konfigurieren?
Edit: hier einige Telefonvorwahl:
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();
Sie sagen, dass man den Typ eines Elements nicht überprüfen kann? –
Vielleicht? Ich weiß nicht, ob dieser Fehler von meiner Syntaxanalysezeile oder meiner Zugriffszeile stammt, weil es nicht so ist, als ob Sie einen Aufruf-Stack oder eine benutzerdefinierte Fehlermeldung oder ähnliches erhalten würden. – djechlin
Sie rufen 'operator []' für einen Wert auf, sagen ein int oder eine Zeichenfolge. –