Junior
Este blocul finally întotdeauna executat în construcția try-catch?
sobes.tech AI
Răspuns de la AI
Nu, nu întotdeauna. finally poate să nu fie executat în următoarele cazuri:
- Încheierea JVM în timpul execuției blocului
trysaucatch. De exemplu, la apelareaSystem.exit(). - Eșecul JVM (de exemplu, eroare de memorie insuficientă sau depășire a stivei).
- Un ciclu infinit în blocul
trysaucatch. - Încheierea thread-ului care execută blocul
try-catch-finally.
În alte cazuri, chiar dacă se aruncă o excepție unchecked sau se face return din blocul try sau catch, blocul finally va fi executat.
public class FinallyExample {
public static void main(String[] args) {
try {
System.out.println("În blocul try");
// Ieșire din JVM înainte de a executa finally
// System.exit(0);
throw new RuntimeException("Excepție forțată");
} catch (RuntimeException e) {
System.out.println("În blocul catch: " + e.getMessage());
// Return din catch, finally tot va fi executat
// return;
} finally {
System.out.println("În blocul finally"); // Acest cod se execută
}
System.out.println("După try-catch-finally"); // Acest cod poate să nu fie atins
}
}