printStackTrace()

percayakah anda, bahwa hal yang kelihatannya sepele kadang-kadang bisa meningkatkan coding speed? saya sih percaya. apalagi kalau hal tersebut berkaitan dengan ‘menemukan salah apa di mana’ dalam program yang panjangnya bisa sampai ratusan baris (atau bahkan bisa ribuan, kalau dihitung dari semua file yang ada). yah, pokoknya program yang bisa berlembar-lembar kalau di-print semuanya.

euh… anda yang tidak atau kurang familiar dengan programming mungkin agak bingung dengan judulnya yang ‘aneh’. jadi sebelumnya, mari kita bicarakan dulu apa yang akan saya tulis di sini.

dalam programming, seorang programmer menuliskan perintah-perintah dalam sebuah file. anggap saja file ini kayak daftar perintah yang harus dikerjakan oleh komputer, jadi sang komputer ini bisa bertindak sesuai kemauan kita. bahasa-bahasa yang digunakan bisa dibilang ‘kaku’ dan ‘aneh’ untuk ukuran manusia ‘normal’, jadi sebaiknya tidak usah dipikirkan kalau anda memang tidak berkepentingan dengan hal tersebut =P.

jadi, dalam program yang jumlahnya bisa sampai ratusan atau ribuan baris (yang sekarang sedang gw kerjakan sih 800an baris, dan ada file lain 200an baris, dan masih ada beberapa file lagi yang lain, jadi kayaknya 1000 baris lewat tuh =P), perlu ada suatu pengecekan per bagian: ada yang salah nggak sih?

nah, kadang-kadang, sebagian (besar?) programmer lebih suka untuk (atau secara tidak sadar) melakukan pengecekan error yang tidak menjelaskan error-nya ada di mana, misalnya dengan penggunaan kata-kata seperti “salah tuh” atau “hoiii” yang dicetak ke layar. atau ketika ada kesalahan query dalam input ke database, pesan error-nya hanya “query-nya salah tuh”.

dan sejujurnya, gw termasuk yang demikian juga… kadang-kadang =).

dan gw berakhir dengan bingung sendiri, karena akhirnya harus sering-sering ctrl+F (ini fungsi find , tahu kan, misalnya untuk mencari kata tertentu di notepad atau sejenisnya) untuk mencari kesalahan pada program yang sedang gw kerjakan.

yah, gw sih merasa lebih terbantu kalau misalnya query database yang bermasalah ditampilkan ke layar (soalnya mungkin saja gw kurang tanda kutip atau sejenisnya, jadi kan salah tuh).

dan yang lebih mengganggu lagi, kalau anda menggunakan try-catch dalam Java (ini salah satu bahasa pemrograman, banyak kok yang lain =) ). hal yang menyebalkan bisa terjadi, misalnya sebagai berikut.

try {

//…blok program

} catch (Exception e) { }

ada masalah kecil. ketika ada exception (yang biasanya terjadi karena kesalahan dalam programming, walaupun tidak selalu) yang terjadi di program tersebut. kenapa? jelas, kan. ketika terjadi exception, tidak ada pesan yang ditampilkan! mau NumberFormatException, IOException, atau NullPointerException juga akan terasa baik-baik saja… kecuali sebegitu fatalnya sampai program yang dibuat menjadi crash.

jadi mungkin ada baiknya kalau pesan yang diberikan lebih jelas. kalau query-nya salah, tuliskan query yang salah itu apa-adanya. kalau ada percabangan, tuliskan dengan jelas status dan variabel yang ada. pokoknya apapun yang ada sejelas mungkin, sehingga rekan programmer anda cukup terbantu untuk memperbaiki program yang anda kerjakan.

dan yang jelas, sebagai programmer, dengan demikian anda akan menguntungkan rekan anda yang bertugas untuk membenahi program yang anda buat. iyalah, rekan anda mungkin masih harus belajar dulu mengenai istilah “hoii” “wahh” atau “lewat sini” yang anda buat. dan percayalah, rekan anda mungkin akan sedikit frustrasi kalau harus membolak-balik ratusan baris program demi mengetahui arti dari ‘kata-kata sakti’ yang anda tuliskan =).

kembali ke contoh tadi, sebenarnya lebih efisien dengan menggunakan printStackTrace(). iyalah, dengan demikian anda langsung tahu anda salah apa, di mana, bahkan sampai ke baris berapa. jauh lebih informatif dibandingkan dengan contoh pertama tadi.

try {

//…blok program

} catch (Exception e) { e.printStackTrace(); }

jadi sebenarnya, hidup itu bisa dibuat mudah. setidaknya, lebih mudah untuk rekan anda yang mungkin masih harus memperbaiki program yang masih harus di-debug, dengan atau tanpa ‘kata-kata sakti’ yang anda tuliskan.

___

footnote:

  • bug – kesalahan pada program, mengakibatkan hasil yang dikerjakan komputer tidak sesuai harapan programmer.
  • query – perintah yang dimasukkan pada database, misalnya untuk mencari data dengan kriteria yang diinginkan.
  • exception – hal yang terjadi karena perintah yang tidak dapat di-handle oleh komputer, misalnya input alfabet atau huruf untuk variabel yang diolah secara numerik.

___

pengalaman pribadi. mari kita budayakan programming yang bertenggang-rasa =)

4 Comments

  1. dita
    February 7, 2007 at 3:32 pm - link to this comment

    kenapa kalo tulisan kayak gini gak ada yang kasih koment yah??
    bingung aku makanan apa sih itu!?
    padahal sama2 anak ilkom, tapi aku kok gak dong algoritma2 gitu ya?apa karena aku tu emang males mikir, ato gimana,,,,
    aku juga dapet java sih di kuliah tapi gak tau knapa kok aku gak punya motivasi ngembanginnya,,,
    sebatas bisa munculin tulisan
    “Hello world from java” doang,,,
    aku malu,,,kalo kayak gini mahasiswanya,kapan ilkom ugm bisa berkembang yah,,,
    ajarin dong!hehehehe

  2. Neon
    August 7, 2007 at 7:12 pm - link to this comment

    gw lagi nyari arti e.printStackTrace(); trus ketemu blog lu 😀
    kalau boleh nanya, fungsi e.printStackTrace(); itu nantinya gimana cara menggunakannya? maksud gw, kalau pakai e.printStackTrace();, pesan error itu nanti tampil dimana? thanks

  3. August 7, 2007 at 7:50 pm - link to this comment

    printStackTrace() itu gunanya untuk menampilkan exception yang terjadi. dari mana, line berapa, siapa yang memanggil, dan sebagainya.

    tidak terlalu powerful dibandingkan debugging step-by-step, tapi sangat memudahkan untuk mengetahui di mana kesalahan yang mungkin terjadi, terutama ketika sedang mencoba test-run sebuah program.

    tergantung mau dikeluarkan ke mana, printStackTrace() itu intinya adalah sebuah stack trace yang dikeluarkan ke layar. teknik lain bisa dengan toString() yang bisa ke layar, message box, atau ke file (yang ini jarang, sih 😛 ), pokoknya apapun yang bisa dilakukan dengan tipe data String.

    …yah, begitulah kira-kira. semoga membantu. 🙂

    :: update

    sedikit ralat, ada sedikit definisi yang tertukar dengan e.toString(). sudah diedit, sih.

  4. Ahmad S
    April 23, 2012 at 8:39 am - link to this comment

    good..good…
    saya sangat suka pembahasannya
    terima kasih atas tambah ilmunya