Ich habe einige technische Fragen. In dieser Funktion:
%Vor%Wenn ich die Ausnahme werfe, was mit dem Programm los ist? Wird meine Funktion beendet oder wird sie weiter ausgeführt? Wenn es endet, welchen Wert wird es zurückgeben?
Wenn Sie eine Ausnahme auslösen, werden alle Funktionen bis zu dem Punkt zurückversetzt, an dem ein try...catch
-Block mit einem passenden catch
-Typ gefunden wird. Wenn Ihre Funktion nicht innerhalb eines try-Blocks aufgerufen wird, wird das Programm mit einer unbehandelten Ausnahme beendet.
Weitere Informationen finden Sie Ссылка .
Es wird im Grunde den Stapel hinaufgehen, bis es einen Ausnahmebehandler findet; Wenn es das Ende des Stapels erreicht, ohne einen zu finden, stürzt Ihr Programm ab. Wenn einen findet, spult es den Stapel zurück, führt den Handler aus und setzt den Code nach dem Handler-Block fort, egal wie hoch der Stack ist.
Sie können alle Arten von Details über C ++ Exception Handling Mechanismus durch Google erhalten. Hier ist ein Anfang .
Da Sie die Ausnahme nicht im Kontext der Funktion abfangen, wird die Funktion beendet und der Stapel wird abgewickelt, wenn nach einem Ausnahmebehandler gesucht wird (ein catch-Block, der entweder einer Zeichenfolge oder dem generischen Catch entspricht ( ...)). Wenn es keinen findet, wird Ihr Programm beendet.
Ihre Funktion wird sofort beendet und es wird nichts zurückgegeben. Wenn keine Catch-Anweisungen die Ausnahme "in der Anrufkette" abfangen, wird Ihre Anwendung beendet.
Es wird nicht zurückkehren, es wird tatsächlich beendet und erreicht den "nächsten" (Call-Stack-weise) try...catch
-Block.
Wenn keine gefunden wird, läuft die meiste Zeit das Programm gerade ab, auf einigen Plattformen kann der Fehler gedruckt werden, ich kenne die Besonderheiten davon jedoch nicht (und höchstwahrscheinlich nur diejenigen, die von std :: exception abgeleitet sind).
Dies ist vielleicht ein guter Ausgangspunkt, um Ausnahmen zu verstehen. Ausnahmebehandlung in C ++