Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Try Catch - Variable

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.02.2010, 20:01 Uhr
Moritz1243



Hallo,

ich habe ein Problem mit der Try - Catch Anweisung. Das Problem besteht darin, dass ich den Socketclient nur 1 Mal aufrufen will, da danach ja eine Verbindung besteht und dann nur noch den Teil unten (zweiter Code). Dies ist aber nicht möglich da s dort gar nicht existiert, weil es ja eben nur in der Try - Catch Anweisung existiert.

Kann irgendwie machen, dass wenn kein Fehler entsteht das er dann s übergibt???

grüße Moritz.


C++:
int main() {

BOOL connected = FALSE;

    while(1)
    {
        try
        {
            //if (!connected)
                SocketClient s("192.168.178.32", 2000);

                string l = s.ReceiveLine();
                if (l.empty()) break;
                float data2[9];
                    //l.erase(l.length()-1,1)
                cout<<l<<endl;
                DecodeDataString(data2, sizeof(data2)/sizeof(data2[0]), l);
                for (unsigned int i = 0; i < sizeof(data2)/sizeof(data2[0]); i++)
                {
                    cout<<data2[i]<<endl;
                }
        }
        catch (const char* s) {
            cerr << s << endl;
        }
        catch (std::string s) {
            cerr << s << endl;
        }
        catch (...) {
            cerr << "unhandled exception\n";
        }
    }
  return 0;
}




C++:
                string l = s.ReceiveLine();
                if (l.empty()) break;
                float data2[9];
                    //l.erase(l.length()-1,1)
                cout<<l<<endl;
                DecodeDataString(data2, sizeof(data2)/sizeof(data2[0]), l);
                for (unsigned int i = 0; i < sizeof(data2)/sizeof(data2[0]); i++)
                {
                    cout<<data2[i]<<endl;
                }

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.02.2010, 20:37 Uhr
0xdeadbeef
Gott
(Operator)


Mir ist das Problem dadurch nicht wirklich klar geworden. Außerdem sehe ich nicht, wo da etwas geworfen wird.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.03.2010, 12:24 Uhr
Bruder Leif
dances with systems
(Operator)


Den Socket ausserhalb des Blocks zu deklarieren, sollte ausreichen. Wenn es der Aufruf des Socket-Konstruktors ist, der eine Exception werfen kann, einfach per new anlegen und in einem auto_ptr ablegen.

Die Exception in einer Variable zu fangen, die genauso heisst wie der Socket (s), stoert uebrigens sehr beim Lesen des Codes...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: