Причина unhandled exception после дисконнекта и как решить эту проблему

Пишу телеграм бота пользуясь данной библиотекой. После дисконнекта получаю ошибку о необработанном исключении вместо ожидания появления нового подключения. Воспроизвести ошибку можно скомпилировав эхобота в IDE Microsoft Visual Studio 2017(или в 2019 с версией 2017 v141) установив boost, boost_date_time, openssl NuGet пакетами. Здесь можно посмотреть как выглядит ошибка.


Ответы (1 шт):

Автор решения: ruakh

Проблема решена. Во-первых, я код эхобота скопировал с главной страницы репозитория, где были кое-какие различия с исходниками из сэмплов (отсутствовал 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
...

→ Ссылка