Este rulați în cele din urmă dacă încercați să întoarceți stivă în rusă în rusă

Finala este aproape întotdeauna făcută.

Update, aș dori să completez răspunsul meu cu privire la tratarea excepțiilor în java. Luați în considerare 3 cazuri care păreau interesante pentru mine. Aici este metoda testFinally ()

În acest caz, vom putea vedea că blocul în cele din urmă îndeplinește întotdeauna, ceea ce urma să fie dovedit.

Cel de-al doilea caz este legat de multiplex sau mai degrabă de faptul că această regulă este valabilă și pentru aplicațiile cu mai multe fire.

Și aici, totul va avea dreptate, adică blocul va funcționa în cele din urmă. Dar nu pentru fluxul de demoni. În mod ironic, java îi va ucide și nu se va sufoca fără a executa blocuri de fani.

Ceea ce dovedește că există excepții peste tot, chiar și în excepții)

răspuns primit la 22 decembrie 12 la ora 9:39

@Artemis Ați decis să răspundeți la toate întrebările, chiar ați răspuns cu mult timp în urmă? - rasmisha Dec 22 '12 la 10:27 am

Dacă răspunsul este corect, de ce minus? - Barmaley pe 22 decembrie '12 la 18:14

@ Artemis, răspunsul la întrebări este bun. Pur și simplu, dacă întrebarea a fost corect răspunsă pentru o lungă perioadă de timp (și acest răspuns este acceptat), atunci nu mai da un răspuns, mai ales dacă răspunsul dvs. nu adaugă informații semnificative. - avp ​​22 decembrie '12 la ora 18:54

Pe lângă răspunsurile existente, mă refer la secțiunile relevante ale documentației.

De ce ar trebui să se numească în cele din urmă după întoarcere este descris în specificația limbajului Java în capitolele de întoarcere și în cele din urmă:

14.17. Declarația de returnare
.
O declarație de întoarcere cu o expresie încearcă să transfere controlul invocatei metodei sau corpului lambda care o conține; valoarea expresiei devine valoarea invocării metodei. Mai exact, executarea unei astfel de declarații de returnare. Dacă evaluarea expresiei se termină brusc dintr-un anumit motiv, atunci declarația de întoarcere se termină brusc din acest motiv. Dacă evaluarea expresiei se termină în mod normal, producând o valoare V, atunci declarația de întoarcere se termină brusc, motivul fiind o revenire cu valoarea V.

14.20.2. Executarea încercării în cele din urmă și încercarea-prindere-în cele din urmă
.
Dacă executarea blocului try completează brusc din orice alt motiv R, atunci blocul final este executat și apoi există o opțiune:
- Dacă blocul final finalizează în mod normal, atunci instrucțiunea try se termină brusc pentru motivul R.
- Dacă blocul final termină brusc pentru motivul S, atunci instrucțiunea try se termină brusc pentru motivul S (și motivul R este eliminat).

14.17. Instrucțiunile se întorc
.
Instrucțiunea de returnare cu expresia Expression încearcă să transmită controlul la codul care a numit expresia metodă sau lambda care conține această instrucțiune; Valoarea expresiei devine valoarea apelului de metodă. Strict vorbind, executarea unei astfel de declarații de întoarcere calculează mai întâi expresia. Dacă evaluarea expresiei se termină prematur din anumite motive, declarația de returnare se termină prematur din același motiv. Dacă expresia finalizează în mod normal, dând o valoare V, atunci declarația de returnare se termină prematur deoarece este o valoare de returnare a lui V

14.20.2. Rulați o încercare-în cele din urmă și încercați-prinde-în cele din urmă
.
Dacă execuția blocului try completează prematur din alt motiv R, se execută un bloc final. Următoarele opțiuni sunt posibile.
- Dacă blocul final finalizează în mod normal, atunci instrucțiunea try se termină prematur din cauza lui R.
- Dacă blocul final este terminat prematur de S, instrucțiunea try se termină prematur din cauza lui S (cauza R este ignorată).

Pe scurt, apelul de întoarcere este un caz special de terminare prematură, terminarea prematură din final suprapunându-se și eliminarea oricărei terminări premature din blocul de încercare.

Dacă blocul try va fi aruncat, care nu va fi prins de către oricare dintre blocul de captură (dacă este cazul), atunci acesta va fi respins și uitat de o revenire apel. sau când aruncați o nouă excepție în cele din urmă.