0Pricing
Python Academy · Pelajaran

Class Pengecualian Kustom

Definisikan tipe pengecualian sendiri agar penyampaian error lebih jelas.

Class Pengecualian Kustom adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Pendahuluan

Kelas pengecualian khusus membuat penanganan kesalahan Anda menjadi eksplisit, terdokumentasi dengan jelas, dan mudah ditangani secara tepat oleh pemanggil.

Mengapa Pengecualian Khusus?

Pengecualian bawaan terlalu umum. Pengecualian khusus memungkinkan pemanggil hanya menangkap kesalahan dari pustaka YOUR tanpa menangkap kesalahan lain yang tidak berkaitan.
class AppError(Exception):
    pass
raise AppError('something went wrong')

Mewarisi dari Exception

class MyError(Exception): pass adalah semua yang Anda perlukan. Selalu warisi Exception, bukan BaseException.
class ValidationError(Exception):
    pass
try:
    raise ValidationError('email is invalid')
except ValidationError as e:
    print(e)

Menambahkan Atribut Khusus

class APIError(Exception): def __init__(self, status, message): self.status = status; super().__init__(message)
class APIError(Exception):
    def __init__(self, status, message):
        self.status = status
        super().__init__(message)
try:
    raise APIError(404, 'Not found')
except APIError as e:
    print(e.status, e)

Hierarki Pengecualian

Bangun hierarki: class DBError(AppError): pass — pemanggil dapat menangkap AppError untuk kesalahan aplikasi apa pun, atau DBError secara khusus.
class AppError(Exception): pass
class DBError(AppError): pass
class NetworkError(AppError): pass
try:
    raise DBError('timeout')
except AppError as e:
    print('app error:', e)

Metode __str__ Khusus

Timpa __str__ untuk mengatur tampilan pesan pengecualian saat dicetak.
class RangeError(ValueError):
    def __init__(self, val, lo, hi):
        self.val, self.lo, self.hi = val, lo, hi
    def __str__(self):
        return f'{self.val} not in [{self.lo}, {self.hi}]'
print(RangeError(15, 0, 10))

Memunculkan Pengecualian Khusus

Gunakan raise dalam fungsi Anda untuk menandai kesalahan khusus domain. Ini membuat API yang rapi bagi pemanggil.
class InsufficientFundsError(Exception):
    def __init__(self, needed, available):
        super().__init__(f'Need {needed}, have {available}')
def withdraw(balance, amount):
    if amount > balance:
        raise InsufficientFundsError(amount, balance)
    return balance - amount
try:
    withdraw(100, 200)
except InsufficientFundsError as e:
    print(e)

Menangkap berdasarkan Kelas Dasar

except AppError menangkap semua subkelas: DBError, NetworkError, dan sebagainya. Hierarki memungkinkan pemanggil memilih tingkat kekhususan.
class AppError(Exception): pass
class DBError(AppError): pass
try:
    raise DBError('conn failed')
except AppError:
    print('any app error')

Pengecualian dengan Pengelola Konteks

Pengecualian khusus terintegrasi dengan pengelola konteks: class suppressed: __exit__ mengembalikan True untuk menekan pengecualian.
class SuppressValue(Exception): pass
try:
    raise SuppressValue('ignored')
except SuppressValue:
    pass  # suppress silently
print('continued')

Mendokumentasikan Pengecualian Khusus

Dokumentasikan WHEN pengecualian harus dimunculkan dan WHAT arti atributnya. String dokumentasi yang baik membuat pengecualian khusus mudah digunakan.
class ConfigError(Exception):
    """Raised when configuration is invalid.
    Attributes:
        key: The invalid config key
    """
    def __init__(self, key, msg):
        super().__init__(msg)
        self.key = key

Praktik Terbaik

Buat hierarki yang dangkal (2–3 tingkat). Selalu warisi Exception. Gunakan nama deskriptif yang diakhiri dengan Error. Letakkan dalam modul khusus exceptions.py.
# Good structure:
class AppError(Exception): pass
class ValidationError(AppError): pass
class NotFoundError(AppError): pass
print('hierarchy demo')

Pemeriksaan Singkat

Pengecualian khusus harus mewarisi apa agar tidak menangkap peristiwa yang mengakhiri sistem?

Ringkasan

Pengecualian khusus: warisi Exception, tambahkan atribut dalam __init__, dan timpa __str__. Bangun hierarki agar mudah ditangkap. Letakkan dalam modul exceptions.py.

Lanjutkan

Kerja bagus! Lanjutkan ke pelajaran berikutnya untuk terus berkembang.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Class Pengecualian Kustom” gratis?

Ya — teks lengkap “Class Pengecualian Kustom” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Class Pengecualian Kustom”?

Definisikan tipe pengecualian sendiri agar penyampaian error lebih jelas. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Class Pengecualian Kustom” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Memahami Pengecualian
  2. try / except / else / finally
  3. Memunculkan dan Memunculkan Ulang Pengecualian
  4. Class Pengecualian Kustom
← Kembali ke Python Academy