これが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文字列処理タスク全体がクラッシュすることはありません。
これはひどく書かれたライブラリですか、それとももっと微妙に構成することは可能ですか?
編集:ここにいくつかの呼び出し元のコードがあります:
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や文字列です。 –