Junior
Milleks kasutatakse finally plokki Java programmeerimiskeeles?
sobes.tech AI
Vastus AI-lt
Java finally blokk tiek try, tiek catch blokose tiek naudojamas norint vykdyti kodą, kuris būtinai turi būti įvykdytas, nepriklausomai nuo to, ar išmetama išimtis ar ne.
Pagrindinės finally paskirtys:
- Ištekliai: Failų, tinklo ryšių, duomenų bazių ir kitų išteklių uždarymas, kurie buvo atidaryti
trybloke. Užtikrina, kad ištekliai liktų uždaryti net ir įvykus klaidoms. - Valymas: Baigiamųjų veiksmų atlikimas, tokių kaip sandorių atšaukimas ar užrakinimų atlaisvinimas.
- Privalomi veiksmai: Bet koks kodas, kuris turi būti įvykdytas pabaigoje, nepriklausomai nuo operacijos rezultato.
Pavyzdys:
try {
// Kodas, galintis išmesti išimtį
FileReader file = new FileReader("myfile.txt");
// ... darbai su failu
} catch (FileNotFoundException e) {
// Išimties apdorojimas
System.err.println("Failas nerastas: " + e.getMessage());
} finally {
// Šis kodas visada įvykdys
System.out.println("Vykdomas `finally` blokas.");
// Čia dažnai uždaromi ištekliai
if (file != null) { // Tarkime, kad 'file' yra deklaruotas už `try-catch`
try {
file.close();
} catch (IOException e) {
System.err.println("Klaida uždarant failą: " + e.getMessage());
}
}
}
Svarbu prisiminti:
- Kodas
finallyįvykdomas net jeireturnoperatorius buvo naudotastryarcatchbloke. - Jei
finallybloke išmetama nauja išimtis, ji užgožia bet kokią išimtį, išmestątryarcatchblokuose. finallyblokas gali būti praleistas, tačiautryturi būti lydimas arbacatch, arbafinally(arba abiejų).