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.

Python
1teks = "dua belas"2try:3    umur = int(teks)4    print("Umur:", umur)5except ValueError:6    print("Masukan harus berupa angka")
Keluaran
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

Python
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"))
Keluaran
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
  • else dijalankan jika tidak ada error.
  • finally selalu dijalankan, ada error atau tidak. Cocok untuk merapikan sesuatu, misalnya menutup file.

Bertanya sampai masukannya benar

Python
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)
Contoh saat dijalankan
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.

Python
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)
Keluaran
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.

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi