如何解决从poco库收到的异常?

时间:2019-06-21 19:16:24

标签: c++ multithreading c++11 exception poco-libraries

当客户端在 SenderThread 上创建即时消息时。它可以向和从发送数据。 但是当客户端进入挂起模式并从挂起返回时。最后创建的线程在 恢复。而且没有数据发送。

收到的异常详细信息:

  

displayText =异常

     

消息=

     

name =例外

     

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ünterObiltschnig 评论后编辑:

我能够捕捉到适当的异常。

 displayText = Invalid argument 
 name = Invalid argument 

有时候我看到套接字关闭异常。当系统进入挂起模式时,所有套接字都被系统关闭。现在,在恢复应用程序尝试再次打开套接字时,它将在Poco :: Net :: Socket :: Socket(Poco :: Net :: Socket const&)中引发错误。对此有任何帮助

1 个答案:

答案 0 :(得分:3)

您必须通过(const)引用捕获异常,以便从中获取有用的信息。

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