1. Riippumatta siitä, onko poikkeus vai poikkeus, viimeisen lohkon koodi suoritetaan; 2. Kun try-and catch -tilanteessa on palautus, lopulta suoritetaan silti; 3. Lopuksi suoritetaan lausekkeoperaation jälkeen paluun jälkeen (tällä hetkellä operaation jälkeistä arvoa ei palauteta, mutta palautettava arvo tallennetaan ensin, riippumatta koodista, palautettu arvo ei muutu, vaikka se olisi aiemmin tallennettu arvo), joten funktion palautusarvo määritellään ennen lopullista suoritusta; 4. On parasta olla sisällyttämättä palautusta lopuksi, muuten ohjelma poistuu aikaisin, eikä palautusarvo ole try or catch -tilassa tallennettu palautusarvo. Esimerkki:
Tilanne 1:try{} catch(){}finally{} return;
Ilmeisesti toimenpide suoritetaan järjestyksessä.
Tilanne 2:try{ return; }catch(){} lopulta{} palaa;
Ohjelma suorittaa koodin ennen returnia try-lohkossa (mukaan lukien lausekeoperaatio return-lauseessa);
sitten suorita viimeinen blokki ja lopuksi palautus try-tilassa;
Lopuksi estä palautus, koska ohjelma on palannut try-ohjelmaan, joten sitä ei enää suoriteta.
Tilanne 3:try{ } catch(){return; } lopulta{} palaa;
Ohjelma suorittaa try-toiminnon ensin, ja jos se kohtaa poikkeuksen, se suorittaa catch blockin,
Jos poikkeus on olemassa, suorita koodi ennen returnia (mukaan lukien lausekeoperaatio return-lauseessa) catchissa, ja suorita sitten kaikki loppulauseen koodi.
Lopuksi suorita palautus kiinniottoblokissa. Lopulta neljän kohdan koodi ei enää suoriteta.
Ei poikkeusta: suorita yritys ja lopulta palaa takaisin.
Tilanne 4:try{ return; }catch(){} lopulta{return; }
Ohjelma suorittaa koodin ennen returnia try-lohkossa (mukaan lukien lausekeoperaatio return-lauseessa);
Sitten suorita viimeinen lohko, koska viimeisessä lohkossa on paluu, joten poistu ajoissa.
Tapaus 5:try{} catch(){return; }lopulta{palaa; }
Ohjelma suorittaa koodin ennen paluuta (mukaan lukien lausekkeet palautuslauseessa) catch-lohkossa;
Sitten suorita viimeinen lohko, koska viimeisessä lohkossa on paluu, joten poistu ajoissa.
Tilanne 6:try{ return; }catch(){return; } lopulta{palaa; }
Ohjelma suorittaa koodin ennen returnia try-lohkossa (mukaan lukien lausekeoperaatio return-lauseessa);
On poikkeus: suoritetaan koodi ennen paluua (mukaan lukien lausekkeoperaatio palautuslauseessa) catch-lohkossa;
Sitten suorita viimeinen blokki, koska viimeisessä lohkossa on paluu, joten se poistuu aikaisin.
Ei poikkeusta: suorita sitten viimeinen lohko uudelleen ja poistu aikaisin, koska viimeisessä lohkossa on paluu.
Lopullinen johtopäätös: Kaikki palautuslause try- tai catch-lauseessa suoritetaan ennen lopullista lausetta, jos se lopulta on olemassa.
Jos palautuslauseke tulee lopulta, ohjelma palautuu, joten palautus palautetaan lopulta varmasti.
Kääntäjä toteuttaa paluun lopulta varoituksena.
|