Причина unhandled exception после дисконнекта и как решить эту проблему
Пишу телеграм бота пользуясь данной библиотекой. После дисконнекта получаю ошибку о необработанном исключении вместо ожидания появления нового подключения. Воспроизвести ошибку можно скомпилировав эхобота в IDE Microsoft Visual Studio 2017(или в 2019 с версией 2017 v141) установив boost, boost_date_time, openssl NuGet пакетами. Здесь можно посмотреть как выглядит ошибка.
Ответы (1 шт):
Проблема решена. Во-первых, я код эхобота скопировал с главной страницы репозитория, где были кое-какие различия с исходниками из сэмплов (отсутствовал deletewebhook, был другой тип исключения вместо std::exception). Так что пользуйтесь кодом только из сэмплов или не забудьте внести изменения. Во-вторых, внес try catch в бесконечный while цикл. Говорят, плохая практика, но решение пока только такое.
// omitted for brevity
...
while (true) {
try {
printf("Bot username: %s\n", bot.getApi().getMe()->username.c_str());
bot.getApi().deleteWebhook();
TgBot::TgLongPoll longPoll(bot);
while (true) {
printf("Long poll started\n");
longPoll.start();
}
}
catch (std::exception& e) {
printf("error: %s\n", e.what());
std::this_thread::sleep_for(std::chrono::seconds(10));
}
}
// omitted for brevity
...