Java nihayet engellendi Bağlantıyı kapatmak vb. gibi önemli kodları yürütmek için kullanılan bir bloktur.
Java nihayet bloğu, bir istisnanın ele alınıp alınmamasına bakılmaksızın her zaman yürütülür. Bu nedenle istisnanın oluşup oluşmadığına bakılmaksızın yazdırılması gereken tüm gerekli ifadeleri içerir.
Nihayet bloğu try-catch bloğunu takip eder.
Nihayet bloğun akış şeması
Not: İstisnayı işlemezseniz, programı sonlandırmadan önce JVM, (eğer varsa) nihayet bloğu yürütür.
Java nihayet bloğunu neden kullanmalı?
- Java'daki sonunda blok ' koymak için kullanılabilir Temizlemek ' Bir dosyayı kapatma, bağlantıyı kapatma vb. gibi kodlar.
- Yazdırılacak önemli ifadeler son blokta yerleştirilebilir.
Son olarak Java kullanımı
Java nihayet bloğunun kullanılabileceği farklı durumları görelim.
Durum 1: Bir istisna oluşmadığında
Java programının herhangi bir istisna atmadığı ve sonunda bloğun try bloğundan sonra yürütüldüğü aşağıdaki örneğe bakalım.
TestFinallyBlock.java
class TestFinallyBlock { public static void main(String args[]){ try{ //below code do not throw any exception int data=25/5; System.out.println(data); } //catch won't be executed catch(NullPointerException e){ System.out.println(e); } //executed regardless of exception occurred or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of phe code...'); } }
Çıktı:
Durum 2: Bir istisna oluştuğunda ancak catch bloğu tarafından işlenemediğinde
Aşağıdaki örneği görelim. Burada kod bir istisna atar ancak catch bloğu bunu işleyemez. Buna rağmen, try bloğundan sonra nihayet bloğu yürütülür ve program anormal şekilde sonlandırılır.
TestFinallyBlock1.java
public class TestFinallyBlock1{ public static void main(String args[]){ try { System.out.println('Inside the try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //cannot handle Arithmetic type exception //can only accept Null Pointer type exception catch(NullPointerException e){ System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } }
Çıktı:
Durum 3: Bir istisna oluştuğunda ve catch bloğu tarafından işlendiğinde
Örnek:
Java kodunun bir istisna attığı ve catch bloğunun bu istisnayı işlediği aşağıdaki örneğe bakalım. Daha sonra try-catch bloğundan sonra nihayet bloğu yürütülür. Ayrıca kodun geri kalanı da normal şekilde yürütülür.
TestFinallyBlock2.java
public class TestFinallyBlock2{ public static void main(String args[]){ try { System.out.println('Inside try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //handles the Arithmetic Exception / Divide by zero exception catch(ArithmeticException e){ System.out.println('Exception handled'); System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } }
Çıktı: