unbekannte Exception weiterschmeißen
-
Hallo zusammen,
wenn ich eine Exception fange, wo ich nicht weiß, von welchem
Typ sie ist, wie kann ich sie dann weiterschmeißen?Ich dachte an etwas sowas:
void* ptr=malloc(1024); try{ method(); // throws any Exception } catch(KnownException e){ free(ptr); } catch(...){ free(ptr); // throw catched Exception }Geht sowas oder muss ich alle potentiellen Exceptions(bzw. eine Basisklasse wie std::exception) kennen?
Gruß,
CSpille
-
Hi!
Einfach:
try { /*...*/ } catch ( ... ) { throw; }grüße
-
warum verwendest du ned nen vector ? der wird automatisch aufgeräumt
-
Wieso wird nen Vector automatisch aufgeräumt?
Ist der von std::autoptr abgeleitet?
Oder wie krieg ich das für eigene Datentypen hin, dass die selbst aufgeräumt werden?
Gruß,
Vectorianer
-
Vectorianer schrieb:
Wieso wird nen Vector automatisch aufgeräumt?
Ist der von std::autoptr abgeleitet?
Du meinst std::auto_ptr. Aber std::vector ist nicht davon abgeleitet.
Oder wie krieg ich das für eigene Datentypen hin, dass die selbst aufgeräumt werden?
Ein eigener Datentyp ist in C++ eine Klasse und die bietet dir einen Destruktor an. Im Destruktor solltest du dann die Resourcen freigeben. Das macht auto_ptr genauso, wie jede andere gut designte Klasse.
-
Hi,
ich glaube, hier geht einiges durcheinander, weil das Thema "Vector" und "Wieso aufräumen" aufgekommen ist.
Vorweg: Die eigentliche Frage hat David_pb beantwortet. Damit kann der Threadersteller weitermachen.
Der Vorschlag, eine andere Speicherverwelatung zu verwenden, als einen "void* malloc(1024)", ist wirklich gut .... aber nicht sinnvoll zu bewerten ohne zu wissen, was CSpille eigentlich vorhat.
- vector ist ein gutes Instrument, wenn der Typ vorher bekannt und für alle Elemente identsch ist und man dynamisch Objekte hinzufügen möchte .
- Wenn Letzteres gar nicht notwendig ist, kann ein schlichtes Stackarray genausogute / bessere Dienste leisten.
Mitint intArr[1024]; method();braucht man sich um "Aufräumen des Speichers" gar nicht mehr zu kümmern.
Allerdings muß der Typ vorher bekannt sein ud für alle identisch sein.
- braucht man wirklich "nackten Speicher" (z.B. bei der lowlevel-Kommunikation), ist ein malloc/free gar nicht so schlecht.
- ....Es gibt zahllose andere Möglichkeiten, zwischen denen man aber nur entscheiden kann, wenn die Verwendung klar ist.
Gruß,
Simon2.
-
Hallo zusammen,
Ich habe zur Vereinfachung in das malloc einen festen Wert reingeschrieben,
allerdings soll es in meinem Fall eine Variable sein.
und Arrays mit Variabler Größe sind doch afaik nicht möglich oder hab ich
da was falsches in Erinnerung?
Ich kann es im Moment auch nicht testen, da ich an einem anderen Rechner sitze...
Aber mit dem Vektor muss ich euch recht geben, ist schon praktisch, da der Destruktor den ganzen Platz wieder freigibt.Gruß,
CSpille
-
die template klasse vector ist das array mit variabler größe
-
r0nny schrieb:
die template klasse vector ist das array mit variabler größe
Wenn wir schonmal dabei sind. Template Klasse is irgendwie eine doofe Bezeichnung! Sollte eher Klassen Template heissen. :)))
grüße