Dies sollte für viele C++ - Experten eine ziemlich einfache Frage sein.Wird der Code nach dem CATCH-Block ausgeführt?
Ich habe einige C++ - Code wie unten.
BOOL FindNumbersInObj() {
BOOL ret = true;
try {
//Do bunch of things here...
CMyObj pObj;
try {
pObj->GetMyObjectPtr();
}
catch (MyException ex) {
pObj = NULL;
ret = false;
}
ret = pObj->GetAllNumbers();
//Do something here too....
}
catch (MyException ex) {
//Log Error Message
ret = false;
}
return ret;
}
Wie Sie sehen, gibt es ein TRY in einem anderen TRY. Im CATCH wird pObj auf NULL gesetzt. Also ist es möglich, dass es aus dem CATCH-Block herauskommt und die Codezeile "ret = pObj-> GetAllNumbers();" ausführt? Wenn dies der Fall ist, würde ich den Code zum Absturz bringen.
Dies ist etwas leagcy/alten Code zu betrachten. Bitte geben Sie Ihre Meinung über TRY in einem anderen TRY.
Und auch, wenn es einen CATCH Block trifft, wird es bis zum Ende der Funktion gehen und return ret anrufen?
Könnten Sie bitte Ihren Einzug korrigieren? –
'BOOL' ist nicht in C++ 11. Du meinst wahrscheinlich 'bool' –
@BasileStarynkevitch: Wahrscheinlich mit alten Microsoft-Typ-Aliasen –