return-Variable im __finally Block auswerten
-
Hallo zusammen,
da ich mich mit C++ nicht so auskenne, beschäftigt mich seit einiger Zeit ein Problem.
Ich möchte in einer Funktion den return-Wert im __finally-Block nachträglich auswerten.
Hier nur ein kleines Beispiel:
int fkt(int var1, int var2, ...) { TKlasse* kl(0); try { // Variablen überprüfen if ( var1<=0 ) return 1; // Error 1 if ( var2<=0 ) return 2; // Error 2 // ansonsten // benötigte Objekte initialisieren kl = new TKlasse(); tue was nötig ist return 0; // alles Ok } __finally { if ( return-Wert > 0 ) ShowMessage("Fehler aufgetreten"); // // Speicher freigeben... if (kl) delete kl; } }Habt ihr eine Idee, wie ich den return-Wert abfragen kann?
-
Nur zur Info...
__finallygehört nicht zum C++ ISO Standard, sondern ist eine Erweiterung von Microsoft: https://msdn.microsoft.com/en-us/library/swezty51.aspxDas zugehörige "try" ist allerdings
__tryund nichttry. Für das Exception-Handling von Standard C++ gibt estry/catch- ein "finally" gibt es so nicht, allerdings wird RAII eingesetzt um denselben Effekt zu erzielen.
-
Und als Antwort auf deine eigentliche Frage:
Einfach den "Return-Wert" ausserhalb des
__try/__finallyBlocks definieren.int fkt(int var1, int var2, ...) { int result = 0; __try { result = /* Berechnung etc. */; } __finally { // hier result benutzen... return result; } }In C++ macht man das typischerweise nicht, sondern benutzt RAII um Resourcen sicher freizugeben. Zumal, wie erwähnt,
__try/__finallynur für Microsoft-Compiler verfügbar ist.