|
|
Veröffentlicht am 17.12.2015 12:34:00
|
|
|

1. Unabhängig davon, ob es eine Ausnahme oder eine Ausnahme gibt, wird der Code im finalen Block ausgeführt; 2. Wenn es eine Rückkehr im Versuch und Fang gibt, wird es schließlich trotzdem ausgeführt; 3. Schließlich wird nach der Ausdrucksoperation nach der Rückgabe ausgeführt (zu diesem Zeitpunkt wird der Wert nach der Operation nicht zurückgegeben, aber der zurückzugebende Wert wird zuerst gespeichert, unabhängig vom Code in letztendlich ändert sich der zurückgegebene Wert nicht, selbst wenn es sich um den zuvor gespeicherten Wert handelt), sodass der Rückgabewert der Funktion vor der endgültigen Ausführung bestimmt wird; 4. Es ist am besten, Return nicht in Final einzubeziehen, da das Programm sonst früh endet, und der Returnwert ist nicht der in Try oder Catch gespeicherte Return-Wert. Beispiel:
Situation 1:try{} catch(){}endlich{} return;
Offenbar wird das Verfahren in der richtigen Reihenfolge durchgeführt.
Situation 2:try{ return; }catch(){} schließlich{} zurück;
Das Programm führt den Code vor Return im Try-Block aus (einschließlich der Ausdrucksoperation in der return-Anweisung);
führt dann den Finally Block aus und führt schließlich die Rückkehr in Try aus;
Schließlich Block-Return, weil das Programm in Try zurückgekehrt ist und es daher nicht mehr ausgeführt wird.
Situation 3:try{ } catch(){return; } schließlich{} kehren zurück;
Das Programm führt zuerst Try aus, und wenn es auf eine Ausnahme stößt, führt es den Catch-Block aus,
Falls eine Ausnahme vorliegt, führe den Code vor Return (einschließlich der Ausdrucksoperation in der return-Anweisung) im Catch aus und führe dann den gesamten Code in der finalen Anweisung aus.
Führe schließlich die Rückgabe im Catch-Block aus. Danach wird der Code an 4 Stellen nicht mehr ausgeführt.
Keine Ausnahme: Ausführen, versuchen und dann schließlich zurückkehren.
Situation 4:try{ return; }catch(){} endgültig{return; }
Das Programm führt den Code vor Return im Try-Block aus (einschließlich der Ausdrucksoperation in der return-Anweisung);
Dann führe den letzten Block aus, denn im Endblock gibt es eine Rückkehr, also verlasse frühzeitig.
Fall 5:try{} catch(){return; }endgültig{zurückkehren; }
Das Programm führt den Code vor der Rückgabe (einschließlich Ausdrucksoperationen in der return-Anweisung) im Catch-Block aus;
Dann führe den letzten Block aus, denn im Endblock gibt es eine Rückkehr, also verlasse frühzeitig.
Situation 6:try{ return; }catch(){return; } schließlich{return; }
Das Programm führt den Code vor Return im Try-Block aus (einschließlich der Ausdrucksoperation in der return-Anweisung);
Es gibt eine Ausnahme: Führe den Code vor Return aus (einschließlich der Ausdrucksoperation in der return-Anweisung) im Catch-Block;
Dann führe den Endblock aus, weil es Return im Endblock gibt, sodass er frühzeitig ausgeht.
Keine Ausnahme: Dann führe ich den letzten Block erneut aus und verlasse den Block früher, weil es im letzten Block eine Rückkehr gibt.
Abschließendes Fazit: Jede Rückgabe-Anweisung in Try oder Catch wird vor der Endanweisung ausgeführt, sofern sie schließlich existiert.
Wenn es eine Rückgabe-Anweisung in finally gibt, wird das Programm zurückkehren, also wird die Rückgabe in endgültig definitiv zurückgegeben.
Der Compiler implementiert die Rückgabe schließlich als Warnung.
|
Vorhergehend:.net nutzt HttpListener, um Inhalte anzuhören, und nutzt Threads, um auf Nutzer zu reagieren, um Blockierungen zu verhindernNächster:VS2013, erreiche schnell eine bestimmte Codezeile, was ist die Abkürzung?
|