Non sono sicuro se questa sarà una cosa specifica con jsoncpp o un paradigma generale su come far funzionare meglio una libreria C++. Fondamentalmente sto ottenendo questa traccia:Gestione degli errori più aggraziata nella libreria 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.
Ciò accade quando l'input è negativo. Quando l'input - che proviene da un'altra mia applicazione tramite memcached - sembra essere cattivo, mi piacerebbe gestire questo errore. Sai, con grazia. Forse qualcosa del tipo, "errore: input per la voce 15006 è male" andando al log. Non si blocca l'intera attività di elaborazione della stringa JSON.
Questa è solo una libreria mal scritta o è possibile configurarla in modo più sottile?
Edit: ecco qualche codice chiamante:
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();
Stai dicendo che non è possibile controllare il tipo di un elemento? –
Forse? Non so se questo errore proviene dalla mia linea di analisi o dalla mia linea di accesso perché non è come gli asserti ti danno uno stack di chiamate o un messaggio di errore personalizzato o altro. – djechlin
Si sta chiamando 'operator []' su un valore, si dice un int o una stringa. –