Penanganan Error: try, except, finally

Membuat program tangguh dengan menangkap, melempar, dan membersihkan setelah error.

Part 17 dari 24 ± 40 menit Gratis

Error vs exception

Saat Python menemui masalah saat program berjalan, ia melempar exception. Jika tidak ditangkap, program berhenti dan menampilkan traceback.

ExceptionPenyebab umum
ValueErrorNilai tidak valid: int("abc")
TypeErrorTipe salah: "5" + 3
ZeroDivisionError10 / 0
IndexErrorindex di luar jangkauan list
KeyErrorkunci dict tidak ada
FileNotFoundErrorfile tidak ditemukan
NameErrorvariable belum dibuat
AttributeErroratribut/method tidak ada pada objek

try dan except

try:
    angka = int(input("Angka: "))
    print(10 / angka)
except ValueError:
    print("Itu bukan angka!")
except ZeroDivisionError:
    print("Tidak boleh nol!")

Alur: kode di try dijalankan; jika terjadi error, langsung loncat ke except yang cocok; sisa kode try dilewati.

Menangkap beberapa error sekaligus

except (ValueError, TypeError):
    ...
except ValueError as e:
    print("Detail:", e)

else dan finally

try:
    f = open("data.txt")
except FileNotFoundError:
    print("File tidak ada")
else:
    print("Berhasil dibuka")      # hanya jika TIDAK ada error
    f.close()
finally:
    print("Selalu dijalankan")    # untuk pembersihan

finally berjalan apa pun yang terjadi — cocok untuk menutup koneksi/file.

raise: melempar error sendiri

def set_umur(umur):
    if umur < 0:
        raise ValueError("Umur tidak boleh negatif")
    return umur

Exception buatan sendiri

class SaldoKurang(Exception):
    pass

raise SaldoKurang("Saldo tidak cukup")

Pola EAFP vs LBYL

Python lebih menyukai EAFP ("lebih mudah minta maaf daripada minta izin"): coba saja, tangkap error bila gagal.

# LBYL: cek dulu
if "kunci" in data:
    nilai = data["kunci"]

# EAFP: coba dulu
try:
    nilai = data["kunci"]
except KeyError:
    nilai = None

Praktik baik

  • Tangkap error yang spesifik. except: kosong atau except Exception: menyembunyikan bug.
  • Jangan "menelan" error diam-diam; minimal catat atau beri pesan jelas.
  • Gunakan blok try sekecil mungkin.
  • Gunakan with untuk resource (bab file) daripada finally manual.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X