Sabtu, 17 Desember 2011

CALL STACK, STACK TRACE, UNCAUGHT EXCEPTION

Call stack adalah urutan pemanggilan method pada aplikasi java. Awal pemanggilan method main, kemudian dalam method main ada pemanggilan ke method lain dan seterusnya hingga pemanggilan method bertumpuk, tumpukan - tumpukan pemanggilan method disebut call stack.

Uncaught exception menyebabkan sebuah method keluar dari eksekusinya untuk dilanjutkan ke method berikutnya sambil berharap bahwa ada kode untuk menangkap exception itu. Kalau dianalogikan dalam gedung uncaught exception adalah kejadian dimana sebuah lantai dalam gedung rubuh, runtuhan tersebut berharap ada yang menahan (menangkap) di lantai bawahnya, kalau tidak ada yang menangkap maka gedung akan kolaps, atau aplikasi akan berhenti bekerja.

Stack trace adalah rekaman jejak call stack ketika exception terjadi. Dengan adanya stack trace kita bisa menganalisis root cause (penyebab utama) terjadinya exception, selama root cause belum di ketahui, hanya dapat menebak - nebak apa yang terjadi dengan aplikasi tetapi tidak bisa  memastikan bagian mana yang bermasalah. Stack trace dengan gamblang akan menunjukkan root cause terjadinya exception, penting sekali melakukan log terhadap stack trace ini agar mempercepat pencarian kesalahan pada aplikasi.

public class StackTraceRootCause{
           public void methodPertama(){
                      System.out.println("method pertama dipanggil");
                       methodKedua();
           }
           public void methodKedua(){
                      System.out.println("method kedua dipanggil");
                       methodKetiga();

           }
           public void methodKetiga(){
                      System.out.println("method ketiga dipanggil");
                       methodKeempat();

           }
           public void methodKeempat(){
                      System.out.println("method keempat dipanggil");
                       methodKelima();

           }
           public void methodKelima(){
                      System.out.println("method kelima dipanggil");
                      String abc = null;
                      abc.toString(); // kode ini menyebabkan NullPointerException

           }           public static void main(String[] args){
                       StackTraceRootCause strc = new StackTraceRootCause();
                       strc.methodPertama();
                       System.out.println("Kode ini tidak akan dieksekusi karena program sudah keluar ketika exception di method ke lima tidak ditangkap ");
           }

}

6 methodKelima()
5 methodKeempat()
4 methodKetiga()
3 methodKedua()
2 methodPertama()
1 main()
-------------------------------------- CALL STACK

Awal method main kemudian memanggil method pertama sampai method kelima. Di dalam method ke lima terjadi exception yang tidak dapat ditangkap oleh method dibawahnya sehingga aplikasi keluar

method pertama dipanggil
method kedua dipanggil
method ketiga dipanggil
method keempat dipanggil
method kelima dipanggil
Exception in thread "main" java.lang.NullPointerException
    at StackTraceRootCause.methodKelima(StackTraceRootCause.java:41)
    at StackTraceRootCause.methodKeempat(StackTraceRootCause.java:31)
    at StackTraceRootCause.methodKetiga(StackTraceRootCause.java:23)
    at StackTraceRootCause.methodKedua(StackTraceRootCause.java:15)
    at StackTraceRootCause.methodPertama(StackTraceRootCause.java:7)
    at StackTraceRootCause.main(StackTraceRootCause.java:48)

Stack Trace adalah output yang dimulai dengan kalimat Exception in thread "main"..... hingga ke bawah. Dari output stack trace ini dapat dilihat dengan jelas apa jeni exception yang terjadi, dari awal mulai hingga di class apa dan di baris berapa kejadian exception itu.

Tidak ada komentar:

Posting Komentar