|
|
Publicerad på 2015-12-17 12:34:00
|
|
|

1. Oavsett om det finns ett undantag eller ett undantag, kommer koden i det sista blocket att exekveras; 2. När det finns återvändning i försök och fånga, kommer slutligen ändå att genomföras; 3. Slutligen exekveras efter uttrycksoperationen efter return (vid denna tidpunkt returneras inte värdet efter operationen, men värdet som ska returneras sparas först, oavsett kod i slutligen kommer det returnerade värdet inte att ändras, även om det är det tidigare sparade värdet), så funktionen returneras innan slutlig exekvering; 4. Det är bäst att inte inkludera return i slutligen, annars avslutar programmet tidigt, och returnvärdet är inte det returnvärde som sparades i try eller catch. Exempel:
Situation 1:try{} catch(){}slutligen{} return;
Tydligen utförs proceduren i ordning.
Situation 2:try{ return; }catch(){} slutligen{} returnera;
Programmet exekverar koden före return i try-blocket (inklusive uttrycksoperationen i return-satsen);
sedan utför den slutliga blocken, och slutligen utför returen i try;
slutligen blockretur, eftersom programmet har återvänt i försök, så det körs inte längre.
Situation 3:try{ } catch(){return; } slutligen{} återkomst;
Programmet kör try first, och om det stöter på ett undantag kör det catch blocket,
Om det finns ett undantag, exekverar koden före return (inklusive uttrycksoperationen i return-satsen) i catch-en, och kör sedan all kod i det sista satsen.
Slutligen, utför returen i catchblocket. Efteråt kommer koden på fyra ställen inte längre att exekveras.
Inget undantag: Kör try och returnera sedan.
Situation 4:try{ return; }catch(){} slutligen{return; }
Programmet exekverar koden före return i try-blocket (inklusive uttrycksoperationen i return-satsen);
Utför sedan det sista blocket, eftersom det finns en återgång i det sista blocket, så sluta tidigt.
Fall 5:try{} catch(){return; }äntligen{återvänd; }
Programmet exekverar koden före return (inklusive uttrycksoperationer i return-satsen) i catch-blocket;
Utför sedan det sista blocket, eftersom det finns en återgång i det sista blocket, så sluta tidigt.
Situation 6:try{ return; }catch(){return; } äntligen{return; }
Programmet exekverar koden före return i try-blocket (inklusive uttrycksoperationen i return-satsen);
Det finns ett undantag: kör koden före return (inklusive uttrycksoperationen i return-satsen) i catch-blocket;
Utför sedan den sista blocken, eftersom det finns en retur i den slutliga blocken, så den slutar tidigt.
Inget undantag: kör sedan det sista blocket igen och slutar tidigt eftersom det finns return i det sista blocket.
Slutgiltig slutsats: Alla return-satser i try eller catch körs före slutsatsen, om slutligen existerar.
Om det finns en return-sats i Finally, så kommer programmet att returnera, så return in finally kommer definitivt att returneras.
Kompilatorn implementerar slutligen returen som en varning.
|
Föregående:.net använder HttpListener för att lyssna på innehåll och använder trådar för att svara användare för att förhindra blockeringNästa:VS2013, snabbt nå en viss kodrad, vad är genvägen?
|