Was passiert, wenn ich eine Ausnahme erstelle?

7

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?

    
helloWorld 17.06.2010, 20:14
quelle

6 Antworten

11

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 Ссылка .

    
Cogwheel 17.06.2010, 20:17
quelle
6

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 .

    
Adrian Petrescu 17.06.2010 20:17
quelle
4

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.

    
Michael Scott Shappe 17.06.2010 20:18
quelle
3

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.

    
Philippe Leybaert 17.06.2010 20:16
quelle
1

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).

    
Manux 17.06.2010 20:18
quelle
1

Dies ist vielleicht ein guter Ausgangspunkt, um Ausnahmen zu verstehen. Ausnahmebehandlung in C ++

    
DumbCoder 18.06.2010 12:05
quelle

Tags und Links