No estoy seguro de si esto será algo específico con jsoncpp o un paradigma general sobre cómo hacer que una biblioteca C++ se comporte mejor. Básicamente estoy obteniendo esta traza:Manejo de errores más elegante en la biblioteca 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.
Eso ocurre cuando la entrada es mala. Cuando la entrada, que proviene de otra aplicación mía a través de memcached, resulta ser incorrecta, me gustaría manejar este error. Ya sabes, con gracia. Tal vez algo así como, "error: entrada para el artículo 15006 es malo" ir al registro. No bloquee toda mi tarea de procesamiento de cadenas JSON.
¿Se trata simplemente de una biblioteca mal escrita o es posible configurarla de forma más sutil?
Editar: aquí hay algo de código de llamada:
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();
¿Está diciendo que no se puede verificar el tipo de elemento? –
¿Tal vez? No sé si este error viene de mi línea de análisis o de mi línea de acceso porque no es como si las afirmaciones tuvieran una pila de llamadas o un mensaje de error personalizado o algo así. – djechlin
Está llamando a 'operator []' en un valor, digamos int o una cadena. –