Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Exception Handling

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
02.12.2005, 11:49 Uhr
~Dai
Gast


Hallo folgende Aufgabe hab ich mir heute zu Gemüte geführt:

Gegeben sei folgendes Programmfragment:

Code:
void DatEin(const char *dateinname, ifstream &eindat)
{
eindat.open(dateinname);
if(!dateiname)
{
cout <<“Fehler beim Öffnen der Datei“;
exit(1);
}
}

int main()
{
...
ifstream eindat;
DatEin (“test.dat“, eindat);
return 0;
}
Code:
void DatEin(const char *dateinname, ifstream &eindat)
{
eindat.open(dateinname);
if(!dateiname)
{
cout <<“Fehler beim Öffnen der Datei“;
exit(1);
}
}

int main()
{
...
ifstream eindat;
DatEin (“test.dat“, eindat);
return 0;
}
Code:
void DatEin(const char *dateinname, ifstream &eindat)
{
eindat.open(dateinname);
if(!dateiname)
{
cout <<“Fehler beim Öffnen der Datei“;
exit(1);
}
}

int main()
{
...
ifstream eindat;
DatEin (“test.dat“, eindat);
return 0;
}

Verändern Sie die Funktion und die main-Funktion durch Einsatz des Exception-Handling so, dass die Ausgabe der Fehlermeldung und der Aufruf exit(1) durch Auswerfen einer Exception ersetzt und diese Exception abgefangen werden kann.


Ok hier mein Lösungsvorschlag

Code:
void DatEin (const char *dateiname, ifstream &eindat)
{
eindat.open(dateiname);
if(!eindat) //Falls Zugriff false
{
throw “Fehler beim Oeffnen der Eingabedatei!“;
}
}

int main()
{
...
ifstream eindat;
try
{
DatEin (“test.dat“, eindat);
}
catch
{
cout <<“Fehler beim Oeffnen der Eingabedatei “;
exit(1);
}
return 0;
}
Code:
void DatEin (const char *dateiname, ifstream &eindat)
{
eindat.open(dateiname);
if(!eindat) //Falls Zugriff false
{
throw “Fehler beim Oeffnen der Eingabedatei!“;
}
}

int main()
{
...
ifstream eindat;
try
{
DatEin (“test.dat“, eindat);
}
catch
{
cout <<“Fehler beim Oeffnen der Eingabedatei “;
exit(1);
}
return 0;
}
Code:
void DatEin (const char *dateiname, ifstream &eindat)
{
eindat.open(dateiname);
if(!eindat) //Falls Zugriff false
{
throw “Fehler beim Oeffnen der Eingabedatei!“;
}
}

int main()
{
...
ifstream eindat;
try
{
DatEin (“test.dat“, eindat);
}
catch
{
cout <<“Fehler beim Oeffnen der Eingabedatei “;
exit(1);
}
return 0;
}


und die Frage würde das hier auch gehen wenn ich z.B.

Code:
throw 1;
Code:
throw 1;
Code:
throw 1;


und im catch Block unten

Code:
catch(int)
{ cout<<"Fehler...";
}
Code:
catch(int)
{ cout<<"Fehler...";
}
Code:
catch(int)
{ cout<<"Fehler...";
}

schreibe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.12.2005, 11:53 Uhr
~Dai
Gast


Ignoriert das oben da hat was nicht gestimmt mit der Formatierung hier nochmal gescheit. Konnte es leider nicht editieren



Hallo folgende Aufgabe hab ich mir heute zu Gemüte geführt:

Gegeben sei folgendes Programmfragment:

void DatEin(const char *dateinname, ifstream &eindat)
{
eindat.open(dateinname);
if(!dateiname)
{
cout <<“Fehler beim Öffnen der Eingabedatei“;
exit(1);
}
}

int main()
{
...
ifstream eindat;
DatEin (“test.dat“, eindat);
return 0;
}

Verändern Sie die Funktion und die main-Funktion durch Einsatz des Exception-Handling so, dass die Ausgabe der Fehlermeldung und der Aufruf exit(1) durch Auswerfen einer Exception ersetzt und diese Exception abgefangen werden kann

Hier nun mein Lösungsvorschlag

void DatEin (const char *dateiname, ifstream &eindat)
{
eindat.open(dateiname);
if(!eindat) //Falls Zugriff false
{
throw “Fehler beim Oeffnen !“;
}
}

int main()
{
...
ifstream eindat;
try
{
DatEin (“test.dat“, eindat);
}
catch
{
cout <<“Fehler beim Oeffnen der Eingabedatei “;
exit(1);
}
return 0;
}

Meine Frage: Kann ich auch throw 1;
catch(int)
{cout<<"Fehler...";
}

schreiben anstelle von dem oben ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.12.2005, 12:06 Uhr
hsp



mach mal cpp tags rein sonst ist das ziemlich anstrengend zu lesen
--
Actiones nostras, quaesumus, Domine, aspirando praeveni et adiuvando prosequere, ut cuncta nostra operatio a te semper incipiat, et per te coepta finiatur.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.12.2005, 12:10 Uhr
~Dai
Gast


Bin kein registrierter Benutzer ich kann das nicht editieren. Ich machs halt so und schreib hier nur den Quellcode von mir mal rein

Also der Startcode


C++:
void DatEin(const char *dateinname, ifstream &eindat)
{
eindat.open(dateinname);
if(!dateiname)
{
cout <<“Fehler beim Öffnen der Eingabedatei“;
exit(1);
}
}

int main()
{
...
ifstream eindat;
DatEin (“test.dat“, eindat);
return 0;
}



soll durch Einsatz des Exception-Handling so verändert werden, dass die Ausgabe der Fehlermeldung und der Aufruf exit(1) durch Auswerfen einer Exception ersetzt und diese Exception abgefangen werden kann

Meine Lösung:



C++:

void DatEin (const char *dateiname, ifstream &eindat)
{
eindat.open(dateiname);
if(!eindat) //Falls Zugriff false
{
throw “Fehler beim Oeffnen !“;
}
}

int main()
{
...
ifstream eindat;
try
{
DatEin (“test.dat“, eindat);
}
catch
{
cout <<“Fehler beim Oeffnen der Eingabedatei “;
exit(1);
}
return 0;
}




Die Frage: Geht das auch



C++:
throw 1;

catch(int)
{cout<<"Fehler...";}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.12.2005, 12:43 Uhr
ao

(Operator)



Zitat von ~Dai:
Bin kein registrierter Benutzer

Hallo Dai, das kannst du ändern.

Gruß,
ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.12.2005, 12:55 Uhr
Tommix



Hallo,
zu Deiner Frage, die Antwort ist "ja":

C++:
#include <iostream>

int main(void)
{
    try
    {
        throw 666;
    }
    catch (int code)
    {
        std::cerr << "Fehler Nummer " << code << " ist aufgetreten." << std::endl;
        return 1;
    }

    return 0;
}


Gruß, Tommix
 
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: