Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 15557|Svar: 0

[Kommunikation] Om det finns en return, försök slutligen fånga exekveringsordningen

[Kopiera länk]
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 blockering
Nästa:VS2013, snabbt nå en viss kodrad, vad är genvägen?
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com