当客户端在 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&)中引发错误。对此有任何帮助
答案 0 :(得分:3)
您必须通过(const)引用捕获异常,以便从中获取有用的信息。
catch (const Poco::Exception& exc)
{
std::cerr << exc.displayText() << std::endl;
}