Как исправить исключение, полученное из библиотеки poco? - PullRequest
4 голосов
/ 21 июня 2019

Когда клиент создает мгновение на SenderThread . Он может отправлять данные в и из. Но когда клиент переходит в режим ожидания и возвращается из режима ожидания. Последние созданные потоки получают исключение на продолжить. и данные не отправляются.

Полученные сведения об исключении:

displayText = Exception

message =

name = Exception

className = N4Poco9ExceptionE

Вот код:

class SenderThread: public Poco::Runnable
{
public:
    MyThread(const std::string& msg):
        Msg(msg);
    {
    }

    void run()
    {
        try {
        SendData(msg);
       } catch(Exception exp) {
           std::cout<<"displayText = "<<e.displayText()<<std::endl;
           std::cout<<"message = "<<e.message()<<std::endl;
           std::cout<<"name = "<<e.name()<<std::endl;
           std::cout<<"className = "<<e.className()<<std::endl;

        }

    }

private:
    std::string Msg;

};

Как получить более подробную информацию об исключении и как его обработать?.

Отредактировано после Günter Obiltschnig комментарий:

Я могу поймать правильное исключение.

 displayText = Invalid argument 
 name = Invalid argument 

Некоторое время я вижу исключение закрытого сокета. Когда система переходит в режим ожидания, тогда весь сокет закрывается системой (ОС). Теперь при возобновлении приложение пытается снова открыть сокет и выдает ошибку в Poco :: Net :: Socket :: Socket (Poco :: Net :: Socket const &). любая помощь в этом, пожалуйста

1 Ответ

3 голосов
/ 26 июня 2019

Вы должны перехватить исключение по (const) ссылке, чтобы получить из него полезную информацию.

catch (const Poco::Exception& exc)
{
    std::cerr << exc.displayText() << std::endl;
}
...