Tujuan Pembelajaran:
Setelah mempelajari materi ini, siswa diharapkan mampu:
Memahami konsep error dalam pemrograman Python
Mengenali berbagai jenis error yang umum terjadi
Menerapkan penanganan error dengan try-except
Menggunakan else dan finally dalam blok try-except
Membuat program yang tangguh terhadap error
Menganalisis dan memperbaiki error dalam kode program
Apa itu Error?
Error adalah kesalahan yang terjadi saat program berjalan. Saat Anda membuat aplikasi, error sudah menjadi teman setia. Hampir tidak mungkin ada aplikasi yang tidak memiliki error sama sekali. Ketika error terjadi, program akan berhenti dan menampilkan pesan error.
Analogi Sederhana: Bayangkan Anda sedang mengemudi. Jika ada batu di jalan (error), mobil Anda bisa mogok (program berhenti). Penanganan error seperti memiliki GPS yang memperingatkan Anda tentang batu di jalan dan menunjukkan jalan alternatif.
Dalam Python, ada beberapa jenis error yang sering ditemui. Mari kita bahas satu per satu!
Jenis-jenis Error yang Umum
1. Syntax Error
Syntax Error adalah kesalahan dalam penulisan kode program. Biasanya terjadi karena salah ketik atau lupa menutup simbol.
Contoh:
print("Hello world" # Lupa kurung tutupPesan Error:
SyntaxError: unexpected EOF while parsingPenjelasan: Python memberitahu Anda bahwa ada kesalahan sintaks dan bahkan menunjukkan di mana kesalahan tersebut terjadi.
2. Name Error
Name Error terjadi ketika Anda mencoba menggunakan variabel yang belum pernah didefinisikan.
Contoh:
print(nama) # Variabel 'nama' belum didefinisikanPesan Error:
NameError: name 'nama' is not definedPenjelasan: Python memberitahu Anda bahwa variabel 'nama' tidak ditemukan.
3. Type Error
Type Error terjadi ketika Anda mencoba melakukan operasi dengan tipe data yang tidak sesuai.
Contoh:
hasil = "5" + 5 # Menambah string dengan integerPesan Error:
TypeError: can only concatenate str (not "int") to strPenjelasan: Python memberitahu Anda bahwa string hanya bisa digabungkan dengan string, bukan dengan integer.
4. Value Error
Value Error terjadi ketika fungsi menerima argumen dengan tipe data yang benar tetapi nilai yang tidak sesuai.
Contoh:
angka = int("abc") # Mengonversi string bukan angka ke integerPesan Error:
ValueError: invalid literal for int() with base 10: 'abc'Penjelasan: Python memberitahu Anda bahwa "abc" tidak bisa dikonversi menjadi angka.
5. Index Error
Index Error terjadi ketika Anda mencoba mengakses indeks yang tidak ada dalam list atau string.
Contoh:
data = [1, 2, 3]
print(data[5]) # Mengakses indeks ke-5 yang tidak adaPesan Error:
IndexError: list index out of rangePenjelasan: Python memberitahu Anda bahwa indeks yang Anda akses melebihi batas list.
6. Key Error
Key Error terjadi ketika Anda mencoba mengakses key yang tidak ada dalam dictionary.
Contoh:
orang = {"nama": "Eko"}
print(orang["umur"]) # Mengakses key 'umur' yang tidak adaPesan Error:
KeyError: 'umur'Penjelasan: Python memberitahu Anda bahwa key 'umur' tidak ditemukan dalam dictionary.
7. Zero Division Error
Zero Division Error terjadi ketika Anda mencoba membagi suatu angka dengan nol.
Contoh:
hasil = 10 / 0 # Membagi dengan nolPesan Error:
ZeroDivisionError: division by zeroPenjelasan: Python memberitahu Anda bahwa pembagian dengan nol tidak diperbolehkan.
Penanganan Error dengan Try-Except
Untuk mencegah program berhenti saat terjadi error, kita bisa menggunakan penanganan error dengan blok try-except. Ini memungkinkan program untuk menangani error dengan baik tanpa berhenti secara tiba-tiba.
Sintaks Dasar
try:
# Kode yang mungkin menyebabkan error
except:
# Kode yang dijalankan jika terjadi errorContoh Tanpa Penanganan Error
# Kalkulator sederhana tanpa penanganan error
print("Kalkulator Sederhana")
angka1 = input("Angka pertama: ")
angka2 = input("Angka kedua: ")
hasil = int(angka1) / int(angka2)
print(f"Hasil: {hasil}")
print("Program selesai")Jika pengguna memasukkan "abc" untuk angka pertama, program akan error dan berhenti di situ. Pesan "Program selesai" tidak akan pernah ditampilkan.
Contoh Dengan Penanganan Error
# Kalkulator sederhana dengan penanganan error
print("Kalkulator Sederhana")
try:
angka1 = input("Angka pertama: ")
angka2 = input("Angka kedua: ")
hasil = int(angka1) / int(angka2)
print(f"Hasil: {hasil}")
except:
print("Terjadi kesalahan dalam perhitungan")
print("Program selesai")Sekarang, jika pengguna memasukkan input yang tidak valid, program tidak akan berhenti secara tiba-tiba. Sebaliknya, program akan menampilkan pesan "Terjadi kesalahan dalam perhitungan" dan melanjutkan ke baris berikutnya.
Penanganan Error Spesifik
Kita bisa menangani jenis error tertentu dengan menyebutkan tipe error setelah kata kunci except. Ini memungkinkan kita untuk memberikan respons yang berbeda untuk jenis error yang berbeda.
Sintaks dengan Error Spesifik
try:
# Kode yang mungkin menyebabkan error
except TipeError1:
# Kode untuk menangani TipeError1
except TipeError2:
# Kode untuk menangani TipeError2
except:
# Kode untuk menangani error lainnyaContoh Penanganan Error Spesifik
print("Kalkulator Sederhana")
try:
angka1 = input("Angka pertama: ")
angka2 = input("Angka kedua: ")
hasil = int(angka1) / int(angka2)
print(f"Hasil: {hasil}")
except ValueError:
print("Input pengguna bukan angka")
except ZeroDivisionError:
print("Tidak bisa dibagi dengan 0")
except:
print("Terjadi kesalahan tidak diketahui")
print("Program selesai")Dengan cara ini, program memberikan pesan yang lebih spesifik sesuai dengan jenis error yang terjadi.
Try-Except-Else
Blok else dalam try-except akan dijalankan hanya jika tidak ada error yang terjadi di dalam blok try.
Sintaks dengan Else
try:
# Kode yang mungkin menyebabkan error
except TipeError:
# Kode untuk menangani error
else:
# Kode yang dijalankan jika tidak ada errorContoh Try-Except-Else
try:
angka = int(input("Masukkan angka: "))
except ValueError:
print("Input tidak valid")
else:
if angka > 0:
print("Angka positif")
elif angka < 0:
print("Angka negatif")
else:
print("Angka nol")Jika pengguna memasukkan angka yang valid, program akan mengecek apakah angka tersebut positif, negatif, atau nol. Jika pengguna memasukkan input yang tidak valid, program akan menampilkan "Input tidak valid".
Try-Except-Finally
Blok finally dalam try-except akan selalu dijalankan, baik terjadi error maupun tidak. Ini berguna untuk kode yang harus selalu dieksekusi, seperti menutup file atau membersihkan sumber daya.
Sintaks dengan Finally
try:
# Kode yang mungkin menyebabkan error
except TipeError:
# Kode untuk menangani error
finally:
# Kode yang selalu dijalankanContoh Try-Except-Finally
try:
angka = int(input("Masukkan angka: "))
hasil = 10 / angka
print(f"Hasil: {hasil}")
except ValueError:
print("Input tidak valid")
except ZeroDivisionError:
print("Tidak bisa dibagi dengan 0")
finally:
print("Program selesai")Blok finally akan selalu dieksekusi, baik terjadi error maupun tidak. Ini memastikan bahwa pesan "Program selesai" selalu ditampilkan.
Contoh Latihan dan Jawaban
Latihan 1: Menangani Input Tidak Valid
Soal: Buat program yang meminta pengguna memasukkan usia dan menampilkan kategori usia:
Anak-anak (0-12 tahun)
Remaja (13-17 tahun)
Dewasa (18-64 tahun)
Lansia (65 tahun ke atas)
Program harus menangani error jika pengguna memasukkan bukan angka atau angka negatif.
Jawaban:
try:
usia = int(input("Masukkan usia Anda: "))
if usia < 0:
print("Usia tidak boleh negatif")
elif usia <= 12:
print("Kategori: Anak-anak")
elif usia <= 17:
print("Kategori: Remaja")
elif usia <= 64:
print("Kategori: Dewasa")
else:
print("Kategori: Lansia")
except ValueError:
print("Error: Masukkan angka yang valid")Latihan 2: Pembagian Aman
Soal: Buat program yang meminta dua angka dari pengguna dan menampilkan hasil pembagian. Program harus menangani:
Error jika input bukan angka
Error jika pembagian dengan nol
Jawaban:
print("Program Pembagian Aman")
try:
angka1 = float(input("Masukkan angka pertama: "))
angka2 = float(input("Masukkan angka kedua: "))
hasil = angka1 / angka2
print(f"Hasil pembagian: {hasil}")
except ValueError:
print("Error: Masukkan angka yang valid")
except ZeroDivisionError:
print("Error: Tidak bisa membagi dengan nol")
except:
print("Error: Terjadi kesalahan tidak diketahui")Latihan 3: Akses List Aman
Soal: Buat program yang memiliki list nama-nama buah. Program meminta pengguna memasukkan indeks dan menampilkan nama buah pada indeks tersebut. Program harus menangani error jika:
Indeks tidak valid (bukan angka)
Indeks di luar jangkauan list
Jawaban:
buah = ["apel", "jeruk", "mangga", "pisang", "anggur"]
print("Daftar Buah:", buah)
try:
indeks = int(input("Masukkan indeks buah (0-4): "))
if indeks < 0 or indeks >= len(buah):
print("Error: Indeks di luar jangkauan")
else:
print(f"Buah pada indeks {indeks}: {buah[indeks]}")
except ValueError:
print("Error: Masukkan angka sebagai indeks")
except:
print("Error: Terjadi kesalahan tidak diketahui")Latihan 4: Pengolahan Data Dictionary
Soal: Buat program yang memiliki dictionary data siswa dengan key: nama, usia, dan nilai. Program meminta pengguna memasukkan key yang ingin diakses dan menampilkan nilai dari key tersebut. Program harus menangani error jika:
Key tidak ditemukan dalam dictionary
Jawaban:
siswa = {
"nama": "Ahmad",
"usia": 17,
"nilai": 85
}
print("Data Siswa:", siswa)
try:
key = input("Masukkan key yang ingin diakses (nama/usia/nilai): ")
if key in siswa:
print(f"{key}: {siswa[key]}")
else:
print(f"Error: Key '{key}' tidak ditemukan")
except:
print("Error: Terjadi kesalahan tidak diketahui")Latihan 5: Program Lengkap dengan Try-Except-Else-Finally
Soal: Buat program kalkulator sederhana yang dapat melakukan operasi penjumlahan, pengurangan, perkalian, dan pembagian. Program harus:
Meminta pengguna memasukkan dua angka
Meminta pengguna memilih operasi
Menampilkan hasil
Menangani semua kemungkinan error
Selalu menampilkan pesan "Terima kasih telah menggunakan kalkulator" di akhir
Jawaban:
print("Kalkulator Sederhana")
print("Operasi yang tersedia: +, -, *, /")
try:
angka1 = float(input("Masukkan angka pertama: "))
angka2 = float(input("Masukkan angka kedua: "))
operasi = input("Pilih operasi (+, -, *, /): ")
if operasi == "+":
hasil = angka1 + angka2
print(f"Hasil: {angka1} + {angka2} = {hasil}")
elif operasi == "-":
hasil = angka1 - angka2
print(f"Hasil: {angka1} - {angka2} = {hasil}")
elif operasi == "*":
hasil = angka1 * angka2
print(f"Hasil: {angka1} * {angka2} = {hasil}")
elif operasi == "/":
hasil = angka1 / angka2
print(f"Hasil: {angka1} / {angka2} = {hasil}")
else:
print("Error: Operasi tidak valid")
except ValueError:
print("Error: Masukkan angka yang valid")
except ZeroDivisionError:
print("Error: Tidak bisa membagi dengan nol")
except:
print("Error: Terjadi kesalahan tidak diketahui")
else:
print("Perhitungan berhasil dilakukan")
finally:
print("Terima kasih telah menggunakan kalkulator")Kesimpulan
Penanganan error adalah konsep penting dalam pemrograman Python yang memungkinkan kita:
Mencegah program berhenti secara tiba-tiba saat terjadi error
Memberikan pesan yang informatif kepada pengguna
Membuat program lebih andal dan user-friendly
Memisahkan antara logika program dan penanganan error
Dengan menguasai penanganan error, Anda bisa membuat program yang lebih tangguh dan profesional. Ingatlah bahwa error bukanlah sesuatu yang ditakuti, tetapi sesuatu yang perlu dikelola dengan baik.
Tips Praktis:
Selalu gunakan try-except untuk operasi yang berisiko error (seperti input pengguna, pembagian, akses file)
Berikan pesan error yang jelas dan informatif
Gunakan penanganan error spesifik untuk memberikan respons yang tepat
Manfaatkan blok finally untuk kode yang harus selalu dieksekusi
Uji program Anda dengan berbagai skenario untuk memastikan semua error tertangani
