【发布时间】:2019-11-04 15:34:19
【问题描述】:
当客户端在 SenderThread 上创建一个即时。它可以相互发送数据。 但是当客户端进入挂起模式并从挂起中返回时。最后创建的线程出现异常 恢复。并且没有发送任何数据。
收到异常详情:
displayText = 异常
消息 =
名称 = 例外
类名 = 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
有时我看到套接字关闭异常。当系统进入挂起模式时,系统(os)将关闭所有套接字。现在在恢复应用程序尝试再次打开套接字时,它会在 Poco::Net::Socket::Socket(Poco::Net::Socket const&) 中抛出错误。请对此有任何帮助
【问题讨论】:
标签: c++ multithreading c++11 exception poco-libraries