← Semua pembelajaran / Python Dasar
Fase 6 · String, File & Error

Error dan try/except

Error bukan tanda kamu gagal — ia satu-satunya cara Python memberi tahu apa yang terjadi. Belajar membacanya adalah keterampilan tersendiri.

Sumber asli docs.python.org Resmi Rangkuman ~6 menit baca

Intisari

  • Baca traceback dari bawah ke atas: baris terakhir menyebutkan jenis error dan sebabnya.
  • try: berisi kode yang mungkin gagal, except: berisi apa yang dilakukan kalau gagal.
  • Selalu sebutkan jenis errornya: except ValueError: — jangan except: polos.
  • Yang paling sering: ValueError, TypeError, KeyError, IndexError, FileNotFoundError.
  • Pakai try untuk hal di luar kendalimu (input pengguna, file, jaringan) — bukan untuk menutupi kode yang memang salah.

Membaca traceback

Traceback (most recent call last):
  File "program.py", line 8, in <module>
    print(hitung(10, 0))
  File "program.py", line 5, in hitung
    return a / b
ZeroDivisionError: division by zero

Cara membacanya:

  1. Mulai dari baris paling bawah. Di situ jenis errornya (ZeroDivisionError) dan penjelasannya (division by zero).
  2. Naik ke File terdekat di atasnya. Itu baris kode yang benar-benar meledak — baris 5.
  3. Baris-baris di atasnya menunjukkan jalur pemanggilan: baris 8 memanggil fungsi yang gagal di baris 5.

Jangan panik melihat traceback panjang. Yang penting cuma dua: baris terakhir, dan nama file milikmu yang paling bawah. Sisanya sering isi perut pustaka lain yang tidak perlu kamu urus.

Error yang paling sering ditemui

ErrorArtinyaContoh penyebab
SyntaxErrorTulisannya bukan Python yang sahLupa titik dua atau kurung penutup
NameErrorNama tidak dikenalSalah ketik nama variabel
TypeErrorTipe salah untuk operasi itu"5" + 5
ValueErrorTipe benar, isinya tidak masuk akalint("abc")
IndexErrorIndeks di luar jangkauan[1,2,3][5]
KeyErrorKunci tidak ada di dictionarydata["tidakada"]
FileNotFoundErrorFile tidak ditemukanSalah nama atau salah folder
ZeroDivisionErrorPembagian dengan nol10 / 0
IndentationErrorIndentasi kacauCampur Tab dan spasi

try / except

try:
    umur = int(input("Umur: "))
    print(f"Tahun depan {umur + 1}")
except ValueError:
    print("Itu bukan angka.")

Python menjalankan blok try. Kalau semuanya lancar, except dilewati. Kalau terjadi ValueError, eksekusi langsung lompat ke except dan program tetap hidup.

Menangani beberapa jenis error

try:
    a = int(input("Angka pertama: "))
    b = int(input("Angka kedua: "))
    print(a / b)
except ValueError:
    print("Masukkan angka, bukan huruf.")
except ZeroDivisionError:
    print("Tidak bisa dibagi nol.")

Jangan menangkap semua error

# BURUK — menelan semua masalah, termasuk salah ketik namamu sendiri
try:
    hasil = hitnug(10)       # typo!
except:
    print("Terjadi kesalahan")     # kamu tidak akan pernah tahu apa yang salah

except polos menyembunyikan bug. Sebutkan selalu jenis error yang memang kamu antisipasi. Kalau muncul error lain, biarkan program berhenti dan menunjukkan tracebacknya — itu jauh lebih baik daripada program yang berjalan sambil salah diam-diam.

else dan finally

try:
    f = open("data.txt", encoding="utf-8")
except FileNotFoundError:
    print("File tidak ada")
else:
    print(f.read())          # jalan hanya kalau TIDAK ada error
    f.close()
finally:
    print("Selesai")         # SELALU jalan, error atau tidak

Dalam praktik, finally jarang kamu butuhkan untuk file — with open() sudah mengurusnya.

Pola: minta ulang sampai benar

while True:
    try:
        umur = int(input("Umur: "))
        if umur < 0:
            print("Umur tidak boleh negatif.")
            continue
        break
    except ValueError:
        print("Masukkan angka.")

print(f"Umurmu {umur} tahun")

Ini bentuk baku validasi input, dan menggabungkan hampir semua yang kamu pelajari sejauh ini.

Kapan pakai try, kapan cek dengan if

SituasiCara
Input pengguna mungkin bukan angkatry / except ValueError
File mungkin belum adatry, atau Path(...).exists()
Kunci dictionary mungkin tidak ada.get() atau if k in d
Pembagi mungkin nolif b != 0 — lebih jelas
Kode kamu sendiri yang salah tulisPerbaiki kodenya, jangan dibungkus try

Latihan: ambil kalkulator dari Fase 3 dan buat ia benar-benar tahan banting — masukan bukan angka, pembagian nol, dan operator yang tidak dikenal semuanya ditangani dengan pesan yang jelas, tanpa program pernah berhenti mendadak.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.