Tôi không chắc liệu đây có phải là một điều cụ thể với jsoncpp hay một mô hình chung với cách làm cho thư viện C++ hoạt động tốt hơn. Về cơ bản, tôi nhận được dấu vết này:Xử lý lỗi duyên dáng hơn trong thư viện 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.
Điều đó xảy ra khi đầu vào kém. Khi đầu vào - mà đến từ một ứng dụng khác của tôi thông qua memcached - xảy ra là xấu, tôi muốn xử lý lỗi này. Bạn biết đấy, duyên dáng. Có lẽ một cái gì đó như, "lỗi: đầu vào cho mục 15006 là xấu" đi vào nhật ký. Không làm hỏng toàn bộ tác vụ xử lý chuỗi JSON của tôi.
Đây có phải chỉ là một thư viện được viết kém hoặc có thể cấu hình nó tinh tế hơn không?
Edit: đây là một số mã gọi:
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();
Bạn đang nói người ta không thể kiểm tra loại phần tử? –
Có thể? Tôi không biết nếu lỗi này đến từ dòng phân tích cú pháp của tôi hoặc đường truy cập của tôi bởi vì nó không giống như xác nhận cung cấp cho bạn một ngăn xếp cuộc gọi hoặc thông báo lỗi tùy chỉnh hoặc bất cứ điều gì. – djechlin
Bạn đang gọi 'toán tử []' trên một giá trị, giả sử một int hoặc một chuỗi. –