1. Uanset om der er en undtagelse eller en undtagelse, vil koden i den sidste blok blive udført; 2. Når der er return i try and catch, vil det til sidst stadig blive udført; 3. Endelig udføres efter udtryksoperationen efter returneren (på dette tidspunkt returneres værdien efter operationen ikke, men værdien, der skal returneres, gemmes først, uanset koden i endeligt vil den returnerede værdi ikke ændres, selvom det er den tidligere gemte værdi), så funktionen returnerer værdien bestemmes før endelig udførelse; 4. Det er bedst ikke at inkludere return i final, ellers vil programmet afslutte tidligt, og returnværdien er ikke den returnværdi, der blev gemt i try eller catch. Eksempel:
Situation 1:try{} catch(){}endelig{} return;
Tilsyneladende udføres proceduren i rækkefølge.
Situation 2:try{ return; }catch(){} endelig{} return;
Programmet eksekverer koden før return i try-blokken (inklusive udtryksoperationen i return-sætningen);
derefter udfører den endelige blok, og til sidst udfører de returnerede i forsøg;
endelig blokretur, fordi programmet er returneret i try, så det ikke længere eksekveres.
Situation 3:try{ } catch(){return; } endelig{} vender tilbage;
Programmet udfører try first, og hvis det støder på en undtagelse, udfører det catch-blokken,
Hvis der er en undtagelse, eksekver koden før return (inklusive udtryksoperationen i return-sætningen) i catch, og udfør derefter al koden i den endelige sætning.
Til sidst udfører du returen i catch-blokken. Derefter vil koden på 4 steder ikke længere blive udført.
Ingen undtagelse: Udfør try og returner så til sidst.
Situation 4:try{ return; }catch(){} endelig{return; }
Programmet eksekverer koden før return i try-blokken (inklusive udtryksoperationen i return-sætningen);
Udfør derefter den sidste blok, fordi der er return i den sidste blok, så afslut tidligt.
Sag 5:try{} catch(){return; }endelig{return; }
Programmet udfører koden før return (inklusive udtryksoperationer i return-sætningen) i catch-blokken;
Udfør derefter den sidste blok, fordi der er return i den sidste blok, så afslut tidligt.
Situation 6:try{ return; }catch(){return; } endelig{return; }
Programmet eksekverer koden før return i try-blokken (inklusive udtryksoperationen i return-sætningen);
Der er en undtagelse: eksekver koden før return (inklusive udtryksoperationen i return-sætningen) i catch-blokken;
Udfør derefter finalist-blokken, fordi der er return i finale-blokken, så den afslutter tidligt.
Ingen undtagelse: udfør derefter den sidste blok igen, og afslut tidligt, fordi der er return i den sidste blok.
Endelig konklusion: Enhver return-sætning i try eller catch udføres før den endelige sætning, hvis endelig eksisterer.
Hvis der er en return-sætning i Finally, så vil programmet returnere, så return in Finally vil helt sikkert blive returneret.
Compileren implementerer endelig returen som en advarsel.
|