|
|
Geplaatst op 17-12-2015 12:34:00
|
|
|

1. Ongeacht of er een uitzondering of een uitzondering is, wordt de code in het laatste blok uitgevoerd; 2. Wanneer er een return is in try and catch, zal uiteindelijk alsnog worden uitgevoerd; 3. Uiteindelijk wordt uitgevoerd na de expressieoperatie na return (op dit moment wordt de waarde na de operatie niet teruggegeven, maar de te retourneren waarde wordt eerst opgeslagen, ongeacht de code in Uiteindelijk verandert de geretourneerde waarde niet, zelfs niet als het de eerder opgeslagen waarde is), dus de functie-returnwaarde wordt bepaald voordat de definitieve uitvoering begint; 4. Het is het beste om return niet in Final op te nemen, anders sluit het programma vroegtijdig af, en de returnwaarde is niet de return value die in try of catch is opgeslagen. Voorbeeld:
Situatie 1:try{} catch(){}eindelijk{} return;
Blijkbaar wordt de procedure op volgorde uitgevoerd.
Situatie 2:try{ return; }catch(){} eindelijk{} return;
Het programma voert de code vóór return uit in het try-blok (inclusief de expressie-operatie in de return-instructie);
vervolgens voer de Final Block uit, en voert uiteindelijk de return uit in Try;
Uiteindelijk block return, omdat het programma in try is teruggekeerd, dus het niet langer wordt uitgevoerd.
Situatie 3:try{ } catch(){return; } eindelijk{} keer terug;
Het programma voert try first uit, en als het een uitzondering tegenkomt, voert het het catch block uit,
Als er een uitzondering is, voer dan de code vóór return uit (inclusief de expressie-operatie in de return-instructie) in de catch, en voer vervolgens alle code uit in de uiteindelijke instructie.
Voer tenslotte de return uit in het catch-blok. Daarna wordt de code op 4 plaatsen niet meer uitgevoerd.
Geen uitzondering: Voer try uit en keer dan terug.
Situatie 4:try{ return; }catch(){} eindelijk{return; }
Het programma voert de code vóór return uit in het try-blok (inclusief de expressie-operatie in de return-instructie);
Voer dan het laatste blok uit, want er is een terugkeer in het laatste blok, dus sluit vroeg af.
Zaak 5:try{} catch(){return; }eindelijk{return; }
Het programma voert de code vóór return uit (inclusief expressiebewerkingen in de return-instructie) in het catch-blok;
Voer dan het laatste blok uit, want er is een terugkeer in het laatste blok, dus sluit vroeg af.
Situatie 6:try{ return; }catch(){return; } eindelijk{return; }
Het programma voert de code vóór return uit in het try-blok (inclusief de expressie-operatie in de return-instructie);
Er is een uitzondering: voer de code uit vóór return (inclusief de expressie-operatie in de return-instructie) in het catch-blok;
Voer dan de finally block uit, want er is return in de finally block, dus hij vertrekt vroeg.
Geen uitzondering: voer dan het laatste blok opnieuw uit en sluit vroeg af omdat er return is in het laatste blok.
Eindconclusie: Elke return-instructie in try of catch wordt uitgevoerd vóór de laatste statement, als er uiteindelijk bestaat.
Als er een return-statement in finally is, dan zal het programma terugkeren, dus de return in finally zal zeker worden teruggegeven.
De compiler implementeert de return uiteindelijk als waarschuwing.
|
Vorig:.net gebruikt HttpListener om naar content te luisteren en gebruikt threads om gebruikers te beantwoorden en blokkering te voorkomenVolgend:VS2013, snel een bepaalde regel code bereiken, wat is de snelkoppeling?
|