Junior
try-catch quruluşunda həmişə finally bloku icra olunurmu?
sobes.tech Süni İntellekt
AI-dan cavab
Xeyr, həmişə deyil. finally aşağıdakı hallarda icra olunmaya bilər:
- JVM
tryvə yacatchblokunun icrası zamanı bağlanması. Məsələn,System.exit()çağırıldıqda. - JVM xətası (məsələn, yaddaş çatışmazlığı və ya yığın daşması).
tryvə yacatchblokunda sonsuz döngü.try-catch-finallyblokunu icra edən thread-in bağlanması.
Digər hallarda, hətta unchecked istisna atılsa və ya try və ya catch blokundan geri dönülsə də, finally bloku icra olunacaq.
public class FinallyExample {
public static void main(String[] args) {
try {
System.out.println("Try blokunda");
// JVM-dən çıxış, finally-dən əvvəl
// System.exit(0);
throw new RuntimeException("Məcburi istisna");
} catch (RuntimeException e) {
System.out.println("Catch blokunda: " + e.getMessage());
// catch-dən geri dönüş, finally hələ də icra olunacaq
// return;
} finally {
System.out.println("Finally blokunda"); // Bu kod icra olunur
}
System.out.println("Try-catch-finally-dən sonra"); // Bu kod əldə olunmaya bilər
}
}