6. Error Handling & Debugging dalam Python

 

✅ 6. Error Handling & Debugging dalam Python

Dalam pemrograman, error atau kesalahan bisa terjadi kapan saja. Jika tidak ditangani dengan baik, error dapat menyebabkan program berhenti atau tidak berjalan sebagaimana mestinya.

Python memiliki error handling (penanganan kesalahan) yang dapat membantu mencegah crash dan mempermudah debugging.


1️⃣ Cara Membaca Error Python

Ketika terjadi error dalam Python, interpreter akan menampilkan Traceback. Ini adalah pesan yang menunjukkan jenis error, di mana error terjadi, dan baris kode yang bermasalah.

📌 Contoh Error (ZeroDivisionError)

python
a = 5 / 0

📌 Output:

vbnet
Traceback (most recent call last): File "script.py", line 1, in <module> a = 5 / 0 ZeroDivisionError: division by zero

🔹 Cara Membaca Error

1️⃣ Traceback menunjukkan jalur eksekusi yang menyebabkan error
2️⃣ File "script.py", line 1 → Error terjadi di baris 1
3️⃣ ZeroDivisionError: division by zero → Jenis error adalah pembagian dengan nol


2️⃣ Jenis-Jenis Error dalam Python

Jenis ErrorPenyebabContoh
SyntaxErrorKesalahan sintaksif x = 5: (harus ==, bukan =)
NameErrorVariabel tidak ditemukanprint(nama) (tapi nama belum didefinisikan)
TypeErrorOperasi pada tipe data yang salah5 + "hello" (tidak bisa menambah angka dan string)
IndexErrorIndeks list melebihi batasangka = [1,2]; print(angka[5])
KeyErrorKey tidak ditemukan dalam dictionarydata = {"nama": "Budi"}; print(data["umur"])
ZeroDivisionErrorPembagian dengan nola = 10 / 0
ValueErrorTipe data salah dalam fungsiint("abc") (tidak bisa mengubah string menjadi angka)
AttributeErrorObjek tidak memiliki atribut"hello".push(5) (string tidak punya metode push())

3️⃣ Try-Except untuk Menangani Error

🔹 Struktur Try-Except

Blok try-except digunakan untuk menangkap dan menangani error agar program tetap berjalan meskipun ada kesalahan.

python
try: # Kode yang mungkin menyebabkan error perintah except JenisError: # Kode yang dijalankan jika error terjadi penanganan_error

🔹 Contoh Try-Except

📌 Menangani ZeroDivisionError

python
try: hasil = 10 / 0 except ZeroDivisionError: print("Error: Tidak bisa membagi dengan nol!")

📌 Output:

javascript
Error: Tidak bisa membagi dengan nol!

🔹 Menangani Beberapa Jenis Error

📌 Contoh menangani banyak error

python
try: angka = int("abc") # ValueError hasil = 10 / 0 # ZeroDivisionError except ValueError: print("Error: Data yang dimasukkan harus berupa angka!") except ZeroDivisionError: print("Error: Tidak bisa membagi dengan nol!")

📌 Output:

javascript
Error: Data yang dimasukkan harus berupa angka!

📌 Penjelasan:

  • Program mencoba mengonversi "abc" menjadi angka → ValueError terjadi lebih dulu
  • Karena error pertama sudah ditangkap, kode tidak lanjut ke pembagian nol

🔹 Menangani Semua Jenis Error dengan Exception

Kadang kita tidak tahu jenis error yang bisa terjadi. Kita bisa menggunakan Exception untuk menangkap semua jenis error.

📌 Contoh:

python
try: x = 10 / 0 except Exception as e: print(f"Terjadi error: {e}")

📌 Output:

vbnet
Terjadi error: division by zero

📌 Penjelasan:

  • Exception as e menangkap semua error dan menyimpan pesan error di e

🔹 Blok Finally (Selalu Dieksekusi)

Blok finally akan selalu dijalankan, baik ada error atau tidak.

📌 Contoh:

python
try: print(10 / 2) except: print("Terjadi error") finally: print("Program selesai")

📌 Output:

5.0 Program selesai

📌 Penjelasan:

  • finally berguna untuk membersihkan resource, misalnya menutup file setelah dibuka

🔹 Raising Error dengan raise

Terkadang kita ingin memunculkan error secara manual dengan raise.

📌 Contoh:

python
def cek_umur(umur): if umur < 18: raise ValueError("Umur harus minimal 18 tahun!") print("Akses diberikan.") cek_umur(15)

📌 Output:

makefile
ValueError: Umur harus minimal 18 tahun!

📌 Kesimpulan

Memahami error sangat penting untuk debugging dan memperbaiki program
Try-Except digunakan untuk menangkap dan menangani error agar program tetap berjalan
Finally selalu dijalankan, berguna untuk membersihkan resource
Raise digunakan untuk membuat error sendiri


🔥 Selanjutnya, kita akan belajar tentang Pemrograman Berorientasi Objek (OOP). Mau aku buatkan penjelasannya juga? 🚀




Berikut adalah penjelasan lengkap tentang Error Handling & Debugging dalam Python.


✅ 6. Error Handling & Debugging

Saat kita menulis kode, sering kali akan terjadi kesalahan (error). Python menyediakan mekanisme untuk menangani error dengan cara yang terstruktur menggunakan Error Handling. Selain itu, debugging adalah proses untuk menemukan dan memperbaiki kesalahan dalam kode kita.


1️⃣ Cara Membaca Error Python

🔹 Jenis-Jenis Error (Exception) dalam Python

Di Python, error sering disebut exception. Ada beberapa jenis error yang umum ditemui, seperti:

Jenis ErrorDeskripsi
SyntaxErrorTerjadi saat kode tidak mengikuti aturan sintaks Python (misalnya tanda kurung tidak sesuai).
TypeErrorTerjadi saat mencoba menggunakan tipe data yang salah untuk operasi tertentu (misalnya mencoba menambahkan string dengan angka).
IndexErrorTerjadi saat mencoba mengakses indeks yang tidak ada dalam list atau string.
KeyErrorTerjadi saat mencoba mengakses key yang tidak ada dalam dictionary.
ValueErrorTerjadi saat operasi atau fungsi menerima tipe data yang benar, tetapi nilai yang salah.
ZeroDivisionErrorTerjadi saat mencoba membagi angka dengan nol.

🔹 Membaca Pesan Error

Python memberikan pesan error yang mendetail untuk membantu kita mengetahui apa yang salah dan di mana masalahnya. Berikut contoh pesan error:

python
x = 10 / 0

Output:

vbnet
ZeroDivisionError: division by zero

Pesan error ini menunjukkan bahwa ada ZeroDivisionError pada baris tempat kita mencoba membagi angka dengan nol. Ini adalah exception yang terjadi pada bagian kode tertentu.


2️⃣ Try-Except untuk Menangani Error

Python memungkinkan kita untuk menangani error menggunakan blok try-except, sehingga program tidak langsung berhenti jika terjadi kesalahan.

🔹 Struktur Dasar try-except

python
try: # Kode yang mungkin menimbulkan error x = 10 / 0 except ZeroDivisionError: # Menangani error jika terjadi print("Tidak bisa membagi dengan nol!")

📌 Penjelasan:

  • try digunakan untuk menjalankan kode yang mungkin menimbulkan error.
  • except digunakan untuk menangani error yang terjadi. Dalam contoh ini, ZeroDivisionError yang terjadi karena pembagian dengan nol akan ditangani dan tidak membuat program berhenti.

Output:

Tidak bisa membagi dengan nol!

🔹 Menangani Beberapa Error

Kadang kita ingin menangani beberapa jenis error sekaligus. Kita bisa menggunakan banyak except untuk menangani berbagai jenis error.

📌 Contoh:

python
try: x = int(input("Masukkan angka: ")) y = 10 / x except ZeroDivisionError: print("Tidak bisa membagi dengan nol!") except ValueError: print("Masukkan angka yang valid!") except Exception as e: print(f"Terjadi error: {e}")

📌 Penjelasan:

  • ValueError terjadi jika input yang diberikan bukan angka.
  • ZeroDivisionError terjadi jika pembagi adalah nol.
  • Exception menangani jenis error lainnya, dengan memberi tahu jenis error melalui e.

🔹 Menangani Semua Error Menggunakan except Secara Umum

Jika kita ingin menangani semua error tanpa spesifikasi, kita bisa menggunakan except tanpa menyebutkan tipe error.

📌 Contoh:

python
try: x = 10 / 0 except: print("Terjadi kesalahan!")

📌 Penjelasan:

  • except: akan menangani semua jenis error yang mungkin terjadi di dalam blok try.

Output:

Terjadi kesalahan!

Namun, ini tidak disarankan karena kita tidak tahu jenis error yang terjadi. Menggunakan except yang lebih spesifik lebih baik untuk memudahkan pemecahan masalah.


🔹 Blok else dan finally

Selain try dan except, Python juga memiliki else dan finally untuk menangani kode lebih lanjut.

1️⃣ else: Kode yang dijalankan jika tidak ada error dalam blok try.
2️⃣ finally: Kode yang dijalankan setelah blok try-except selesai, terlepas dari apakah ada error atau tidak.

📌 Contoh:

python
try: x = 10 / 2 except ZeroDivisionError: print("Tidak bisa membagi dengan nol!") else: print("Pembagian berhasil!") finally: print("Ini selalu dijalankan.")

📌 Penjelasan:

  • else hanya akan dijalankan jika tidak ada error.
  • finally selalu dijalankan, baik terjadi error atau tidak.

Output:

Pembagian berhasil! Ini selalu dijalankan.

3️⃣ Debugging - Proses Mencari dan Memperbaiki Bug

Debugging adalah proses menemukan dan memperbaiki error atau bug dalam program. Berikut beberapa tips debugging di Python:

🔹 Menggunakan Print Statement

Cara paling sederhana untuk debug adalah dengan menambahkan print statement untuk melihat nilai variabel atau hasil eksekusi pada titik tertentu.

📌 Contoh:

python
def bagi(a, b): print(f"a: {a}, b: {b}") # Debug: melihat nilai a dan b return a / b bagi(10, 0) # Akan menyebabkan error

🔹 Menggunakan Debugger Python (PDB)

Python memiliki pdb (Python Debugger) yang memungkinkan kita untuk berhenti di titik tertentu dalam kode dan memeriksa nilai variabel, eksekusi kode langkah demi langkah.

📌 Contoh:

python
import pdb def bagi(a, b): pdb.set_trace() # Menambahkan titik henti (breakpoint) return a / b bagi(10, 0)

Setelah menjalankan kode dengan pdb.set_trace(), kita bisa melakukan interaksi seperti memeriksa nilai variabel atau melangkah ke eksekusi selanjutnya dengan perintah n untuk langkah selanjutnya.


📌 Kesimpulan

Error Handling membantu kita menangani error secara elegan menggunakan try-except.
Menangani Banyak Error bisa dilakukan dengan beberapa blok except.
else dan finally memberikan kontrol lebih lanjut setelah try-except.
Debugging dengan menggunakan print statement atau debugger (pdb) membantu kita menemukan dan memperbaiki kesalahan dalam kode.


🔥 Selanjutnya, kita akan belajar tentang Pemrograman Berorientasi Objek (OOP) di Python. Mau aku buatkan penjelasannya juga? 🚀

Tidak ada komentar:

Posting Komentar