1. Uansett om det finnes et unntak eller et unntak, vil koden i den siste blokken bli utført; 2. Når det er retur i try and catch, vil det til slutt fortsatt bli utført; 3. Til slutt utføres etter uttrykksoperasjonen etter returnering (på dette tidspunktet returneres ikke verdien etter operasjonen, men verdien som skal returneres lagres først, uavhengig av koden i til slutt vil ikke den returnerte verdien endres, selv om det er den tidligere lagrede verdien), så funksjonen returneres verdi bestemmes før endelig utførelse; 4. Det er best å ikke inkludere retur i til slutt, ellers vil programmet avslutte tidlig, og returverdien er ikke returverdien som ble lagret i try eller catch. Eksempel:
Situasjon 1:try{} catch(){}endelig{} return;
Tilsynelatende utføres prosedyren i riktig rekkefølge.
Situasjon 2:try{ return; }catch(){} endelig{} returnerer;
Programmet kjører koden før return i try-blokken (inkludert uttrykksoperasjonen i return-setningen);
deretter utfører den endelige blokken, og til slutt returneren i forsøk;
Til slutt blokkretur, fordi programmet har returnert i Try, så det ikke lenger kjøres.
Situasjon 3:try{ } catch(){return; } endelig{} tilbake;
Programmet kjører try first, og hvis det møter et unntak, kjører det catch-blokken,
Hvis det finnes et unntak, kjør koden før return (inkludert uttrykksoperasjonen i return-setningen) i catch, og kjør deretter all koden i den endelige setningen.
Til slutt, utfør returen i catch-blokken. Etter det vil koden på fire steder ikke lenger bli kjørt.
Ingen unntak: Kjør try og returner til slutt.
Situasjon 4:try{ return; }catch(){} endelig{return; }
Programmet kjører koden før return i try-blokken (inkludert uttrykksoperasjonen i return-setningen);
Deretter utfører du den siste blokken, fordi det er retur i den siste blokken, så avslutt tidlig.
Sak 5:try{} catch(){return; }endelig{return; }
Programmet kjører koden før return (inkludert uttrykksoperasjoner i return-setningen) i catch-blokken;
Deretter utfører du den siste blokken, fordi det er retur i den siste blokken, så avslutt tidlig.
Situasjon 6:try{ return; }catch(){return; } endelig{return; }
Programmet kjører koden før return i try-blokken (inkludert uttrykksoperasjonen i return-setningen);
Det finnes et unntak: kjør koden før return (inkludert uttrykksoperasjonen i return-setningen) i catch-blokken;
Deretter kjører du finalist-blokken, fordi det er return i finale-blokken, så den avslutter tidlig.
Ingen unntak: så utfør den siste blokken igjen, og avslutt tidlig fordi det er retur i den siste blokken.
Endelig konklusjon: Enhver retursetning i try eller catch utføres før den endelige setningen, hvis endelig eksisterer.
Hvis det er en return-setning i Finallyly, vil programmet returnere, så return in Finally vil definitivt bli returnert.
Kompilatoren implementerer endelig returen som en advarsel.
|