undtagelse, mens tråd kaster fejl i scoket c + + windows

Indlæg af Hanne Mølgaard Plasc

Problem



jeg skaber klient adskille ansøgning i windows ved hjælp af socket og jeg ønsker at kaste undtagelse på køre tid fra tråd hvis noget problem opstår, men jeg får fejl til kaste udsagn.


    //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

                        }
                    }

                }

            }


nu vil jeg kaste fejl, når serveren lukker, men jeg får kørselstid fejl. så er der nogen måde, så jeg kan få fejl i min hovedfunktion. Sorry men jeg er ny i c + + så vær venlig at hjælpe mig. og fejl er


Indtast billedbeskrivelse her

Bedste reference


Koden, som kaster undtagelsen er ikke problemet; det er manglen på nogen kode til at fange undtagelsen om at det er problemet. Ansøgningen afsluttes, fordi intet er ved at tage den undtagelse, du kaster, du skal sikre dig, at noget kommer til at fange det. Din startServer metode - trådproceduren - skal tage undtagelsen og træde rent ud af tråden .