Lompat ke konten utama
←

Python: Objek dan Berkas

Pelajaran 8 dari 21

Pewarisan, dataclass, dan properti

Exception buatan sendiri dan raise ... from

Setelah pelajaran ini kamu bisa membuat kelas exception turunan Exception, melemparnya dengan raise, menangkapnya dengan urutan except yang benar, dan merangkai error asal dengan raise ... from.

  • ±13 menit
  • 3 latihan
  • Diperiksa 28 Okt 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

Materi

Exception bawaan seperti ValueError hanya menyebut jenis masalahnya secara umum. Program yang lebih besar butuh nama yang menyebut masalahnya sendiri, misalnya StokKurangError, supaya pemanggil bisa menangkap persis kesalahan itu tanpa ikut menangkap ValueError lain. Tutorial Python §8.6 menyebut exception buatan sendiri diturunkan dari kelas Exception, dan namanya umumnya diakhiri Error seperti exception bawaan. Kelasnya boleh kosong, atau menyimpan atribut yang dibutuhkan penangkapnya.

class SaldoKurangError(Exception):
    def __init__(self, saldo, diminta):
        super().__init__(f"saldo {saldo} kurang untuk {diminta}")
        self.kurang = diminta - saldo

def tarik(saldo, jumlah):
    if jumlah > saldo:
        raise SaldoKurangError(saldo, jumlah)
    return saldo - jumlah

try:
    tarik(50000, 80000)
except SaldoKurangError as e:
    print(e)          # saldo 50000 kurang untuk 80000
    print(e.kurang)   # 30000

raise menghentikan fungsi dan melempar objek exception ke pemanggil. except NamaError as e menangkapnya, dan e adalah objek itu lengkap dengan atributnya. Blok except dicocokkan dari atas ke bawah dan hanya yang pertama cocok yang dijalankan. Karena objek kelas turunan juga cocok dengan kelas induknya, blok untuk kelas yang lebih khusus ditulis lebih dulu.

Kapan dipakai: saat error tingkat rendah, misalnya ValueError dari int(), perlu diterjemahkan menjadi error yang bermakna bagi program. Tulis raise DataRusakError(...) from e di dalam blok except. Tutorial §8.5 menyebut ini exception chaining: error asalnya tersimpan di atribut __cause__ dan ikut tercetak di traceback, sehingga penyebab awalnya tidak hilang.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Apa yang tercetak saat kode ini dijalankan?

class DataError(Exception):
    pass

class KolomHilangError(DataError):
    pass

try:
    raise KolomHilangError("kolom harga")
except DataError:
    print("data rusak")
except KolomHilangError:
    print("kolom hilang")
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Lanjutkan ke