Я новичок в protobuf (C++) и попробую написать первую тестовую программу с protobuf. КодексОбработка ошибок в protobuf
#include <cstdlib>
#include <iostream>
#include "proto/req.pb.h"
using namespace std;
using namespace google::protobuf;
int main(int argc, char** argv) {
std::string s = "asdfasdf";
auto MyLogHandler = [] (google::protobuf::LogLevel level, const char* filename, int line, const std::string& message)
{
std::cout << "message " << message << std::endl;
};
google::protobuf::SetLogHandler(MyLogHandler);
Request req;
if (req.ParseFromString(s)){
cout << "Parse - OK" << endl;
}else{
cout << "Parse - ERROR" << endl;
}
return 0;
}
При запуске программы - это показывает только сообщение об ошибке, но не какой-либо причине об этом. Как я могу получить причину ошибки?
Это было не сообщение protobuf. Некоторое странное поведение с библиотекой protobobuf тихо возвращает false без каких-либо обозначений. – Nikolay
@Nikolay - Да, ваши фиктивные входные данные попадают во вторую категорию. Как я уже сказал, библиотека protobuf не дает вам никакой информации, потому что нет никакой полезной информации. 'false' означает, что данные не являются протобуфом. Вот и все. (Это не «молчание». «Тихий» будет, если он вернется «истина», даже если сообщение недействительно.) –