Program yang Tangguh · Pelajaran 8 dari 11
Menangani error dengan try dan except
9 menit baca · BelajarCode
Program yang baik tidak berhenti mendadak hanya karena pengguna salah ketik. Python menyediakan try dan except untuk menangkap error.
1teks = "dua belas"2try:3 umur = int(teks)4 print("Umur:", umur)5except ValueError:6 print("Masukan harus berupa angka")Masukan harus berupa angka
Kode di dalam try dijalankan. Jika muncul ValueError, Python langsung melompat ke blok except ValueError, dan program tetap berjalan.
Beberapa jenis error
1def bagi(a, b):2 try:3 hasil = a / b4 except ZeroDivisionError:5 return "Tidak bisa membagi dengan nol"6 except TypeError:7 return "Keduanya harus angka"8 else:9 return round(hasil, 2)10 finally:11 print("Selesai mencoba membagi", a, "dengan", b)1213print(bagi(10, 4))14print(bagi(10, 0))15print(bagi(10, "dua"))Selesai mencoba membagi 10 dengan 4 2.5 Selesai mencoba membagi 10 dengan 0 Tidak bisa membagi dengan nol Selesai mencoba membagi 10 dengan dua Keduanya harus angka
elsedijalankan jika tidak ada error.finallyselalu dijalankan, ada error atau tidak. Cocok untuk merapikan sesuatu, misalnya menutup file.
Bertanya sampai masukannya benar
1while True:2 try:3 nilai = int(input("Nilai (0-100): "))4 if 0 <= nilai <= 100:5 break6 print("Nilai harus di antara 0 dan 100")7 except ValueError:8 print("Ketik angka, bukan huruf")9print("Nilai tersimpan:", nilai)Nilai (0-100): sembilan puluh Ketik angka, bukan huruf Nilai (0-100): 120 Nilai harus di antara 0 dan 100 Nilai (0-100): 90 Nilai tersimpan: 90
Melempar error sendiri
Fungsi bisa melempar error dengan raise jika menerima data yang tidak masuk akal.
1def set_nilai(nilai):2 if not 0 <= nilai <= 100:3 raise ValueError(f"nilai {nilai} di luar rentang 0-100")4 return nilai56try:7 set_nilai(150)8except ValueError as e:9 print("Ditolak:", e)Ditolak: nilai 150 di luar rentang 0-100
as e menyimpan error ke variabel e sehingga pesannya bisa ditampilkan.
Jangan tangkap semua error begitu saja
except: tanpa nama error menangkap semua jenis error, termasuk salah ketik nama variabel. Akibatnya kesalahan di programmu tersembunyi. Tangkap hanya error yang memang kamu perkirakan.
Cek pemahaman
Pada struktur try, except, else, dan finally, blok mana yang selalu dijalankan?
Latihan
Rata-rata dari teks
Buat fungsi rata_rata(teks) yang menerima teks berisi angka dipisah koma, misalnya "80, 90, 75". Abaikan bagian yang bukan angka dan tampilkan peringatan untuknya. Jika tidak ada angka sama sekali, kembalikan None.
Pembahasan
1def rata_rata(teks):2 angka = []3 for bagian in teks.split(","):4 try:5 angka.append(float(bagian))6 except ValueError:7 print("Dilewati:", bagian.strip())8 if not angka:9 return None10 return sum(angka) / len(angka)1112print(rata_rata("80, 90, 75"))13print(rata_rata("80, abc, 100"))14print(rata_rata("x, y"))81.66666666666667 Dilewati: abc 90.0 Dilewati: x Dilewati: y None
float(" 90") tetap berhasil karena float mengabaikan spasi di awal dan akhir.
Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.