- Bab 10 dari 11
- 30 menit
- 1 latihan kode
- 4 soal kuis
Penanganan Error, Bekerja dengan File, dan Ekosistem Library
Di bab ini (8 bagian)
Tujuan bab ini
- Menangani exception dengan
try,except,else, danfinally, serta membuat error sendiri denganraise. - Mengenali error yang sering muncul dan membaca traceback untuk menemukan baris penyebabnya.
- Membaca dan menulis file teks dengan
with open(), moder,w,a, danencoding="utf-8". - Mengenal library populer Python dan bidang yang cocok untuk masing-masing.
Exception: saat program tersandung
Error yang muncul saat program sedang berjalan disebut exception. Tanpa penanganan, satu exception langsung menghentikan seluruh program. Bayangkan aplikasi kasir yang mati total hanya karena kasirnya mengetik huruf di kolom harga. Tidak lucu.
Python menyediakan try dan except supaya program bisa bereaksi dengan sopan dan tetap jalan.
try, except, else, finally
Di deck, angkanya diambil dari input(). Di sini kita bungkus dalam fungsi supaya mudah dicoba dengan nilai langsung:
Output:
| Blok | Kapan dijalankan |
|---|---|
try | Selalu dicoba duluan |
except NamaError | Hanya jika error jenis itu terjadi di try |
else | Hanya jika try selesai tanpa error |
finally | Selalu, ada error atau tidak |
finally cocok untuk pekerjaan "beres-beres", misalnya menutup koneksi atau mencetak log. Tulis except dengan jenis error yang spesifik. except: tanpa nama memang menangkap semuanya, tapi juga menyembunyikan bug yang seharusnya kamu lihat.
Error yang sering muncul
| Error | Penyebab | Contoh pemicu |
|---|---|---|
SyntaxError | Penulisan kode salah | print("halo" (kurung tidak ditutup) |
NameError | Variabel belum dibuat | print(skor) sebelum skor ada |
TypeError | Tipe data tidak cocok | "5" + 3 |
ValueError | Nilai tidak valid untuk operasi | int("abc") |
IndexError | Indeks di luar jangkauan | [1, 2, 3][5] |
KeyError | Kunci dictionary tidak ada | {"a": 1}["b"] |
Satu catatan: SyntaxError muncul sebelum program sempat berjalan, jadi tidak bisa ditangkap oleh try di file yang sama. Perbaiki penulisannya.
Membuat error sendiri dengan raise
Kadang kamu sendiri yang perlu menolak nilai yang tidak masuk akal. Gunakan raise:
Output:
Dengan as e, kamu mendapat objek error dan bisa menampilkan pesannya.
Membaca traceback
Saat error tidak ditangani, Python mencetak traceback. Jangan panik, baca dari bawah ke atas:
- Baris terakhir memberi tahu jenis dan pesan error:
IndexError, indeks di luar jangkauan. - Baris di atasnya menunjukkan file dan nomor baris:
nilai.py, baris 2. - Baris kode yang ditampilkan adalah penyebabnya:
nilai[5].
Python versi baru kadang menambahkan tanda ^ di bawah bagian yang bermasalah supaya lebih mudah ditemukan.
Bekerja dengan file
Program sering perlu menyimpan data supaya tidak hilang saat ditutup. Cara paling aman adalah with open(), karena file otomatis ditutup walaupun terjadi error di tengah jalan.
Output:
| Mode | Nama | Perilaku |
|---|---|---|
"r" | Read | Membaca, mode default. Error jika file tidak ada |
"w" | Write | Menulis, menimpa seluruh isi lama |
"a" | Append | Menambah di akhir, isi lama tetap |
Beberapa hal kecil yang penting:
write()tidak menambahkan baris baru otomatis, jadi tulis\nsendiri.- Setiap baris yang dibaca masih membawa
\ndi ujungnya.strip()membuang spasi dan baris baru di awal dan akhir teks. - Tambahkan
encoding="utf-8"supaya huruf seperti "é" atau emoji tidak berubah jadi karakter aneh di komputer lain.
File dan error sering bertemu. Membuka file yang tidak ada dengan mode "r" memunculkan FileNotFoundError, yang bisa kamu tangkap dengan except FileNotFoundError:.
Ekosistem library populer
Kekuatan besar Python ada di library pihak ketiga yang dipasang dengan pip install. Setelah dasar kuat, pilih sesuai bidang yang ingin kamu dalami.
| Library | Fungsi | Pasang |
|---|---|---|
| Pandas | Analisis data tabel | pip install pandas |
| NumPy | Komputasi numerik | pip install numpy |
| Matplotlib | Grafik dan visualisasi | pip install matplotlib |
| scikit-learn | Machine learning | pip install scikit-learn |
| Django | Framework web lengkap | pip install django |
| Flask | Framework web ringan | pip install flask |
| FastAPI | Membuat API cepat | pip install fastapi |
| Requests | Akses HTTP dan API | pip install requests |
Tertarik data? Mulai dari Pandas, NumPy, dan Matplotlib. Mau bikin web? Coba Flask dulu karena ringan, lalu Django atau FastAPI.
Kesalahan umum
- Memakai mode
"w"padahal ingin menambah data. Isi lama langsung hilang, pakai"a". - Menulis
except:kosong untuk semua kasus, sehingga bug lain ikut tersembunyi. - Lupa
strip(), lalu heran kenapa"Ani\n" == "Ani"bernilaiFalse. - Membaca traceback dari atas dan bingung. Mulailah dari baris paling bawah.
- Membuka file tanpa
with, lalu lupa memanggilclose().
Rangkuman
- Exception adalah error saat program berjalan, dan
try/exceptmencegah program berhenti mendadak. elsejalan jika tidak ada error,finallyselalu jalan, danraisemembuat error sendiri.- Error umum:
SyntaxError,NameError,TypeError,ValueError,IndexError,KeyError. Baca traceback dari bawah. with open(nama, mode, encoding="utf-8")menutup file otomatis. Modermembaca,wmenimpa,amenambah.- Library populer seperti Pandas, NumPy, Matplotlib, scikit-learn, Django, Flask, FastAPI, dan Requests dipasang dengan
pip install.
Slide 25 sampai 27 dari deck Pemrograman Python: Dari Nol sampai Proyek Mini. Penjelasan lengkapnya ada di mode Baca.

Selesaikan bab ini
- 1. Baca materi
- 2. Latihan kode (1)
- 3. Kuis (4 soal)
Latihan kode: Membaca data nilai dari file
Buat fungsi baca_nilai(f). Parameter f adalah objek file yang sudah dibuka (di pemeriksaan dipakai io.StringIO), berisi baris seperti Ani,88.
- Kembalikan dictionary
{nama: nilai}dengan nilai bertipefloat. - Buang spasi dan baris baru dengan
strip(), lewati baris kosong. - Baris yang rusak (nilai bukan angka atau tanpa koma) dilewati memakai
try/except ValueError.
Contoh: baca_nilai(io.StringIO("Ani,88\nCitra,abc\n")) menghasilkan {"Ani": 88.0}.
Cek pemahaman
1Apa yang dicetak kode berikut?
try: x = int("7") except ValueError: print("A") else: print("B") finally: print("C")2Mode `open()` mana yang menambah isi di akhir file tanpa menghapus isi lama?
3Blok `finally` hanya dijalankan jika tidak terjadi error di blok `try`.
4Kode `stok = {"apel": 5}` lalu `stok["jeruk"]` memunculkan error apa?