Advertisement
  1. Code
  2. Python

Debugging Dalam Python

Scroll to top
Read Time: 5 min

() translation by (you can also view the original English article)

Ketika menyebutkan debugging, ini berarti mungkin ada sebuah bug di bagian tengah. Nah, maksud saya bukan serangga yang mungkin ditemukan di rumah—yang saya maksud adalah bug dalam pemrograman!

Sebelum melangkah lebih jauh dalam tutorial ini, mari dapatkan beberapa istilah di sini. Mari tentukan secara singkat apa yang kita maksud oleh sebuah bug dan debugging.

Bugs

Sebuah bug dalam computing terjadi baik dalam software dan hardware namun fokus di sini adalah pada software. Mari saya sebutkan sebuah kepercayaan dimana asal mula istilah bug. Dipercaya bahwa penggunaan pertama istilah bug dalam computing adalah ketika bug sebenarnya (ngengat) ditemukan pada relay komputer Mark II. Istilah bug juga digunakan pada akhir abad 19 untuk menjelaskan kesalahan teknis.

Bugs dalam software menyebabkan program menghasilkan perilaku yang tidak diinginkan. Itu adalah istilah yang umum digunakan untuk mengacu pada sebuah kesalahan dengan lokasi dan alamat yang tidak diketahui, dan mereka dapat menyebabkan permasalahan yang parah (yaitu merusak program).

Dalam situasi ini, debugging memainkan perannya.

Debugging

Nah, orang mungkin mengatakan bahwa cara terbaik untuk menghindari tiap permasalahan adalah tidak menghasilkan bugs dari awal. Namun ini sayangnya langka, dan itu tidak mudah untuk menghasilkan sebuah program bersih dari semula. Memiliki bugs merupakan situasi normal yang akan kamu hadapi.

Debugging adalah proses mencari, menganalisa, dan memperbaiki tiap bug (kesalahan) yang mungkin kamu hadapi. Goal akhir debugging adalah menghilangkan bugs, dan untuk menghasilkan sebuah program yang berjalan dan bertindak seperti yang diinginkan. Penting untuk mencatat di sini bahwa kebanyakan waktu akan dihabiskan pada mencari bugs karena, seperti yang disebutkan di atas, itu berada pada lokasi yang tidak diketahui.

Untuk memiliki ide seberapa sulitnya debugging, lihat apa yang dikatakan Brian W. Kernighan:

Setiap orang mengetahui bahwa debugging dua kali lebih sulit daripada menulis program pertama kalinya. Jadi jika kamu sama pintarnya dengan saat kamu menulisnya, bagaimana cara melakukan debug?

Menangani Exceptions Dalam Python

Sebuah exception adalah sebuah object yang mengindikasikan bahwa kita memiliki sebuah bug (error) Dengan kata lain, Python menggunakan exception untuk mengkomunikasikan bahwa ada bug di dalam program. Ini bisa berupa bagian localization dalam proses debugging. Penerimaan exception object dan melakukan tindakan yang diperlukan untuk mengatasi bug mengacu pada penanganan exception. Ini akan menjadi tahapan menganalisa dan memperbaiki di dalam proses debugging.

Pernyataan Try

Pernyataan try Python digunakan untuk penanganan exception dan memiliki dua bentuk: try/except dan try/finally. Dalam kasus pertama, klausul try dapat diikuti oleh satu atau lebih klausul except, sementara dalam kasus terakhir, itu hanya dapat diikuti hanya oleh satu klausul finally.

try/except

Sintaks try/except adalah sebagai berikut:

1
try:
2
    # try block code

3
except:
4
    # except block code

Body klausul try akan berisi code yang mungkin membuat sebuah exception, menyediakan bahwa jika exception dibuat, semua pernyataan di dalam blok akan dilewatkan. Di sisi lainnya, body klausul except disebut exception handler, dimana itu digunakan untuk menangkap exception. Code blok except hanya akan dijalankan jika sebuah exception telah dibuat, jika tidak blok itu akan dilewatkan. Kamu dapat menggunakan exception bawaan seperti yang ditunjukkan dalam Python Standard Library.

Mari ambil sebuah contoh untuk membuat semuanya menjadi jelas. Katakanlah kita diminta untuk memasukkan sebuah denominator dalam sebuah formula pembagian. Karena pembagian dengan nol tidak diizinkan, mari tulis pernyataan try/except yang memeriksa jika ada pembagian oleh nol, dan mencetak sebuah pesan jika error ini terjadi.

1
denominator = input('Enter a denominator value: ')
2
try:
3
    formula = 15/denominator
4
    print 'The result is ' + str(formula)
5
except ZeroDivisionError:
6
    print 'You attempted to divide by zero which is not allowed'

Jika kamu memasukkan nilai 5, sebagai contoh, kamu akan mendapatkan output berikut:

1
The result is 3

Sekarang, coba masukkan nilai 0 sebagai input. Output apa yang akan kamu dapatkan dalam kasus ini?

try/finally

try/finally adalah cara lainnya untuk menulis pernyataan try di dalam Python. Klausul finally disebut klausul pembersihan/penghilangan karena mereka selalu harus dijalankan terlepas apakah sebuah exception terjadi di dalam blok try.

Mari ambil contoh dalam section di atas, namun dengan klausul finally:

1
denominator = input('Enter a denominator value: ')
2
try:
3
    formula = 15/denominator
4
    print 'The result is ' + str(formula)
5
finally:
6
    print 'You attempted to divide by zero which is not allowed'

Perhatikan bahwa ketika kamu memasukkan nilai 5 sebagai input, sebagai contoh, kamu akan mendapatkan input berikut:

1
The result is 3
2
You attempted to divide by zero which is not allowed

Kata kunci raise

Kata kunci raise adalah cara lainnya untuk menangani exception di dalam Python. Dalam kasus ini, kamu akan dapat mengangkat sendiri exceptionmu—yaitu exception yang diangkat ketika sebuah permasalahan terjadi di luar lingkup error yang diharapkan.

Mari lihat sebuah contoh penggunaan kata kunci raise untuk mengerti lebih jauh tentang konsepnya.

1
try:
2
    x = input('Enter a number in the range 1-10: ')
3
    if x<1 or x>10:
4
        raise Exception
5
    print 'Great! You listened to me and entered a valid number'
6
7
except:
8
    print 'Your number seems to be outside the range 1-10'

Dalam contoh  ini, jika kamu memasukkan sebuah angka di luar rentang yang diizinkan, pernyataan print di dalam blok except akan dijalankan.

Lanjutkan, coba beberapa nilai dan periksa outputnya.

Module traceback

Module traceback Python adalah cara lainnya untuk menangani exception di dalam Python. Itu pada dasarnya digunakan untuk mencetak kumpulan jejak sebuah program setelah exception terjadi. traceback berisi pesan error, nomor baris yang menyebabkan error, dan call stack, yaitu urutan function call yang mengarahkan ke error.

Mari ambil sebuah contoh yang membangun sebuah traceback:

1
def createException(name):
2
    raise Exception('It seems that ' + name + ' raised an exception')
3
    
4
createException('Abder')

Jika kamu menjalankan script ini, kamu akan mendapatkan output yang tampak sebagai berikut:

1
Traceback (most recent call last):
2
  File "test.py", line 4, in <module>
3
    createException('Abder')
4
  File "test.py", line 2, in createException
5
    raise Exception('It seems that ' + name + ' raised an exception')
6
Exception: It seems that Abder raised an exception

Perhatikan bahwa bug (error) terjadi pada line 2 di dalam function createException. Perhatikan juga bahwa call stack dapat membantu kita melacak call mana yang mengacu pada error, dimana dalam kasus ini adalah call yang terjadi dalam line 4.

Tutorial semakin panjang, dan saya akan berhenti pada titik ini. Seperti yang telah kamu lihat, melakukan debugging pada program adalah hal yang alami dan reguler yang kita lakukan, dan saya percaya bahwa jenis error yang kamu lihat di dalam tutorial ini terdengar familiar bukan?

Ada cara lainnya untuk melakukan debugging pada program Python dan menangani exception. Cara yang terkenal, misalnya, adalah assert statement.

Selamat melakukan debugging!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.