开发者

exception while thread is throwing error in scoket c++ windows

i am creating client sever application in windows using socket and i want to throw exception at run time from thread if any problem occur but i am getting error for throw statement.

    //create thread in cpp file
    CreateThread(NULL,0,startServer,this,0,NULL);

        //thread in header file
            static unsigned long __stdcall startServer(void *i_SocketTransportServer)
           {
                           ((SocketTransportServer*)i_SocketTransportServer)->StartServerThread(((SocketTransportServer *)i_SocketTransportServer)->m_socketServer);
                return 0;
           }

        //and StartServerThread is function called by thread
         // SocketTransportServer is inner class of  RMLThinTransport
            void RMLThinTransport::SocketTransportServer::StartServerThread(SOCKET i_socketServer)
            {
                m_socketAccept=NULL;
                while(true)
                {
                    Sleep(20);
                    if(m_canAcceptMore)
                    {
                        m_canAcceptMore=false;
                        if(!m_isRunning)
                        {
                                break;
                        }
                        try
                        {
                            m_socketAccept=accept(m_socketServer,NULL,NULL);
                            if(m_socketAccept==INVALID_SOCKET)
                            {
                                int lastError=WSAGetLastError();
                                closesocket(m_socketAccept);
                                                                                                                            SocketExceptions                                        
 exceptionInAcceptAtServer;
                                  exceptionInAcceptAtServer.detectErrorAccept(&lastError);

throw exceptionInAcceptAtServer;
                            }
                            else
                            {
                                //_LOG("Client connected",EventTypeInfo) ;
                                OutputDebugStringW(L"client connected.....");
                                /* If client connected then setClinetCout value 1 */
                                setClientCount(1);
                                m_ClientSockets.push_back(m_socketAccept);
                                CreateThread(NULL,0,receiveDataAtServer,this,0,NULL);
                            }

                        }
                        catch(SocketExceptions& i_exceptionInAcceptAtServer)
                        {   

                            /*OutputDebugStringW(L"Can't accept client In Exception. ."); */
    throw i_exceptionInAcceptAtServer;//getting runtime error from here

  开发者_如何学JAVA                      }
                    }

                }

            }

now i want to throw error when server close but i am getting run time error. so is there any way so i can get error in my main function.sorry but i am new in c++ so please help me. and error is

exception while thread is throwing error in scoket c++ windows


The code that throws the exception is not the problem; it's the lack of any code to catch the exception that's the problem. The application is terminating because nothing is catching the exception you're throwing; you must ensure that something is going to catch it. Your startServer method -- the thread procedure -- must catch the exception, and cleanly exit the thread.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜