PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : return werte



Mat
06-12-2005, 23:53
ich habe eine Frage oder auch kleines Problemchen....
wenn ich habe eine Methode2 die in Methode1 aufgerufen wird....und in der Methode2 wird etwas auf fehler überprüft was auch nur dort geht sollte abgebrochen werden.......obwohl der rückgabewert der methode z.b ein int ist....wie kann ich das realisieren ? also der pseudocode ist glaub ich verständlicher
also z.b so:


...
int a = method2()
...

int class1::method2()
{ int b = 0;
if ( !file.exists(...) )
{
QMessageBox("ERROR file opening ");
return;
}
b = 9; //oder irgendwas anderes halt
return b;
}


das weitere Bearbeiten von von b falls das file gar nicht existiert soll abgebrochen werden. Aber auch das weitere Bearbeiten in der Methode1 soll abgebrochen werden. Also es soll dann nur die Fehlermeldung auf den Schirm und weiter nichts passieren.....

Boron
07-12-2005, 07:44
Du solltest dem Rückgabewert auch einen Fehlerwert zuweisen.
Wenn also method2() bspw. -1 zurückgibt, dann ist ein Fehler aufgetreten.

Außerdem würde ich niemals mehrere return anweisungen in einer Methode schreiben. Besser eine Variable für den Rückgabewert und den dann entsprechend setzen:
...
int a = method2();
...

int class1::method2()
{
int returnValue = 0;
if ( !file.exists(...) )
{
QMessageBox("ERROR file opening ");
returnValue = -1;
}
else
{
returnValue = 9; //oder irgendwas anderes halt
}

return returnValue;
}Der else-Zweig ist dann der Gut-Fall, also die Situation wenn die Datei existiert und du somit weiterarbeiten kannst.

Beim Aufruf von method2() kann du dann das Gleiche machen:
int a = method2();
if( a != -1 )
{
// hier weiter im Programm, da alles gut ist
}
else
{
// hier Fehlerbehandlung
}