Belajar Pemrograman Java Dari Dasar

Memahami Contoh Penggunaan Blok Finally Pada Exception Handling Program Java

Hallo para agan, kali ini admin mau menulis mengenai contoh penggunaan blok finally pada exception handling. Sebelumnya sudah di bahas mengenai blok try, catch dan contohnya. Satu poin penting yang perlu diingat adalah pernyataan dalam blok finally akan selalu dieksekusi, tidak perduli apakah suatu exception terjadi ataupun tidak.

Tapi, ada satu kasus yang bisa menyebabkan blok finally tidak dieksekusi,yaitu pada saat program keluar lebih awal dari blok try dengan memanggil method System.exit.

Jadi ketika anda menginginkan blok kode yang akan selalu dijalankan oleh program Java terlepas dari ada atau tidak adanya exception, maka blok finally adalah tempat yang tepat bagi anda untuk melakukan tujuan tersebut.

finally_try_catch_exception_handling


Secara sederhana, syntax dari finally adalah sebagai berikut:

try {
   pernyataan-pernyataan;
}
catch (Exception ex) {
   penanganan ex;
}
finally {
   pernyataanFinally;
}

5 Hal Penting Yang Harus Diketahui Dari Blok finally


Terdapat lima poin penting yang harus anda pahami dari blok finally ini, diantaranya adalah:

  1. Ketika anda menggunakan blok finally maka anda juga harus menggunakan blok try. Ini adalah pasangan yang tidak dapat dipisahkan.

  2. Penggunaan blok finally tidak wajib pada exception handling, tapi ini merupakan pilihan bila blok try-catch tidak cukup untuk menyelesaikan masalah. Pernyataan pada blok finally akan selalu dijalankan setelah eksekusi dari blok try.

  3. Blok catch akan dieksekusi lebih dahulu bila terjadi exception pada blok try. Namun, bila tidak ada exception maka blok catch akan diabaikan dan pernyataan pada blok finally akan dieksekusi.

  4. Exception pada blok finally dapat ditindaklanjuti sama persis dengan exception lainnya.

  5. Bila blok try memiliki pernyataan seperti break, continue atau return maka pernyataan dalam blok finally akan tetap dieksekusi. 


Jadi, ketika pernyataan-pernyataan dalam blok try melemparkan exception dan kemudian ditangkap oleh blok catch, maka kode dalam blok finally akan dieksekusi. Tidak hanya itu, meskipun tidak ada exception yang terlempar atau tertangkap, kode di blok finally akan tetap dieksekusi.

Ketika blok finally digunakan maka blok catch bisa saja diabaikan. 

Blok finally Dengan Blok try Yang Memiliki Pernyataan return


Finally juga akan mengeksekusi pernyataan di dalam bloknya bahkan ketika terdapat pernyataan return sebelum mencapai blok finally tersebut.

Contoh:

public class try_return_finally {
  
    public static String myMethod()
    {
       try {
         return "Ini adalah pernyataan return dalam blok try";
         
       }
       finally {
         System.err.println("Ini adalah pernyataan dalam blok finally");
         System.err.println("Pernyataan ini dieksekusi walaupun blok try memiliki pernyataan return");
       }
    }
    
    public static void main(String args[])
    {
       System.out.println(myMethod());  
    }

}

Output:
Ini adalah pernyataan dalam blok finally
Pernyataan ini dieksekusi walaupun blok try memiliki pernyataan return
Ini adalah pernyataan return dalam blok try

Blok try dan finally Tanpa Menggunakan Blok catch


Berikut ini adalah contoh ketika class hanya menggunakan blok try dan finally saja.

Contoh:

public class finally_tanpa_blok_catch {
 
 public static void main(String[] args) {
  try {
    System.out.println("Ini pernyataan di dalam blok try");          
  } 
  finally{
   System.err.println("Ini pernyataan di dalam blok finally");
  } 
 }
}

Output:
Ini pernyataan di dalam blok try
Ini pernyataan di dalam blok finally

Contoh Blok try, catch, finally dan Method System.exit()

Method System.exit() akan menghentikan thread program, sehingga pernyataan setelahnya dan juga pernyataan dalam blok finally tidak akan dieksekusi.

a) Contoh method System.exit() terdapat pada blok try

public class try_system_exit_finally {
 
 public static void main(String[] args) {
  
  try{
   lemparkanException();
  }
  catch (Exception ex){
   System.err.println("Exception yang terlempar "
     + "dari blok catch ditangani di method main");
  }
  
 }
 
 public static void lemparkanException() throws Exception{
  try{
   System.out.println("Pernyataan try dieksekusi");
   
   System.exit(0);//Method ini akan menghentikan thread
   throw new Exception();
   
  }
  catch (Exception ex){
   System.err.println("Exception terjadi");
   throw ex;//exception ini ditangani di method main
  }
  finally{
   
   System.err.println("Pernyataan finally dieksekusi");
  }
 }

}

Output:
Pernyataan try dieksekusi

b) Contoh method System.exit() terdapat pada blok catch

public class catch_system_exit_finally {
 
 public static void main(String[] args) {
  
  try{
   lemparkanException();
  }
  catch (Exception ex){
   System.err.println("Exception yang terlempar "
     + "dari blok catch ditangani di method main");
  }
  
 }
 
 public static void lemparkanException() throws Exception{
  try{
   System.out.println("Pernyataan try dieksekusi");
   
   
   throw new Exception();
   
  }
  catch (Exception ex){
   System.err.println("Exception terjadi");
   System.exit(0);//Method ini akan menghentikan thread
   throw ex;//exception ini ditangani di method main
   
  }
  finally{
   
   System.err.println("Pernyataan finally dieksekusi");
  }
 }

}

Output:
Pernyataan try dieksekusi
Exception terjadi

Sekarang anda bisa  membandingkan sendiri ketika tidak menggunakan method System.exit() untuk lebih memahaminya.



Contoh Program try, catch, finally, Pada Method Yang Melemparkan Dan Tidak Melemparkan Exception


Berikut ini adalah contoh ketika method yang melemparkan dan tidak melemparkan exception menggunakan blok try, catch, dan finally.

Contoh:

public class Exception_finally {
 
 
 public static void melemparkanException() throws Exception{
  
  try{
   System.out.println("Pernyataan pada line 7 dieksekusi");
   throw new Exception();
  }
  catch(Exception ex){
   System.out.println("Exception yang terlempar dari "
     + "method melemparkanException telah ditangkap oleh blok catch pada line 26");
   throw ex;//exception ini akan ditangani oleh blok catch di main method
  }
  
  finally{
   System.err.println("Pernyataan dalam blok finally pada line 17 dieksekusi");
  }
 }
 
 public static void tidakMelemparkanException(){
  try{
   System.out.println("Method tidakMelemparkanException dijalankan");
  }
  //blok catch ini tidak akan dieksekusi karena method tidak melemparkan exception
  catch(Exception ex){
   System.err.println(ex);
  }
  finally{
   System.err.println("Pernyataan dalam blok finally pada line 41 dieksekusi");
  }
  
  System.out.println("Akhir dari method tidakMelemparkanException");
 }
 
 public static void main(String[] args) {
  
  try{
   melemparkanException();
  }
  catch(Exception ex){
   System.err.println("Exception yang terlempar dari blok catch pada "
     + "line 13 ditangani di main method");
  }
  
  //tidakMelemparkanException();
 }

}


Contoh output:

Pernyataan pada line 7 dieksekusi
Exception yang terlempar dari method melemparkanException telah ditangkap oleh blok catch pada line 26
Pernyataan dalam blok finally pada line 17 dieksekusi
Exception yang terlempar dari blok catch pada line 13 ditangani di main method
Method tidakMelemparkanException dijalankan
Pernyataan dalam blok finally pada line 30 dieksekusi
Akhir dari method tidakMelemparkanException

Demikianlah penjelasan mengenai contoh penggunaan blok finally pada exception handling program Java. Yang terpenting adalah pemahaman konsepnya sebagai dasar. Semoga bisa membantu anda yang sedang belajar pemograman Java.

Share on Facebook
Share on Twitter
Share on Google+

Tempat berbagi pengetahuan untuk bahasa pemrograman Java

Related : Memahami Contoh Penggunaan Blok Finally Pada Exception Handling Program Java