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