0Pricing
Python Academy · Ders

Özel Durum Sınıfları

Hataları daha açık biçimde iletmek için kendi özel durum türlerinizi tanımlayın.

Özel Durum Sınıfları, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

Giriş

Özel istisna sınıfları, hata yönetiminizi açık, kendi kendini açıklayan ve çağıranların hassas biçimde yönetebileceği bir yapıya dönüştürür.

Özel İstisnalar Neden Kullanılır?

Yerleşik istisnalar fazla geneldir. Özel istisnalar, çağıranların ilgisiz istisnaları yakalamadan yalnızca YOUR kitaplığının hatalarını yakalamasını sağlar.
class AppError(Exception):
    pass
raise AppError('something went wrong')

Exception Sınıfından Kalıtım

class MyError(Exception): pass tek başına yeterlidir. Her zaman BaseException yerine Exception sınıfından kalıtın.
class ValidationError(Exception):
    pass
try:
    raise ValidationError('email is invalid')
except ValidationError as e:
    print(e)

Özel Öznitelikler Ekleme

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)

İstisna Hiyerarşisi

Bir hiyerarşi oluşturun: class DBError(AppError): pass — çağıranlar herhangi bir uygulama hatası için AppError'ı veya özellikle DBError'ı yakalayabilir.
class AppError(Exception): pass
class DBError(AppError): pass
class NetworkError(AppError): pass
try:
    raise DBError('timeout')
except AppError as e:
    print('app error:', e)

Özel __str__ Yöntemi

Yazdırıldığında istisna iletisinin nasıl görüneceğini denetlemek için __str__ yöntemini geçersiz kılın.
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))

Özel İstisnalar Oluşturma

Etki alanına özgü hataları bildirmek için işlevlerinizde raise kullanın. Böylece çağıranlar için temiz bir API oluşturulur.
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)

Temel Sınıfa Göre Yakalama

except AppError tüm alt sınıfları yakalar: DBError, NetworkError vb. Hiyerarşi, çağıranların ayrıntı düzeyini seçmesini sağlar.
class AppError(Exception): pass
class DBError(AppError): pass
try:
    raise DBError('conn failed')
except AppError:
    print('any app error')

Bağlam Yöneticisi ile İstisna

Özel istisnalar bağlam yöneticileriyle bütünleşir: class suppressed: __exit__ istisnayı bastırmak için True döndürür.
class SuppressValue(Exception): pass
try:
    raise SuppressValue('ignored')
except SuppressValue:
    pass  # suppress silently
print('continued')

Özel İstisnaları Belgeleme

Ne zaman raise kullanılacağını ve özniteliklerin ne anlama geldiğini belgeleyin: WHEN ve WHAT. İyi belge dizeleri, özel istisnaların kullanılabilir olmasını sağlar.
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

En İyi Uygulamalar

Hiyerarşiyi sığ tutun (2-3 düzey). Her zaman Exception sınıfından kalıtın. Error ile biten açıklayıcı adlar kullanın. Özel bir exceptions.py modülüne yerleştirin.
# Good structure:
class AppError(Exception): pass
class ValidationError(AppError): pass
class NotFoundError(AppError): pass
print('hierarchy demo')

Hızlı Kontrol

Sistemden çıkış olaylarını yakalamaktan kaçınmak için özel istisnalar hangi sınıftan kalıtılmalıdır?

Özet

Özel istisnalar: Exception sınıfından kalıtılır, __init__ içinde öznitelikler eklenir ve __str__ geçersiz kılınır. Yakalanabilirlik için hiyerarşiler oluşturun. exceptions.py modülüne yerleştirin.

Devam Edin

Harika çalıştınız! İlerlemenizi sürdürmek için sonraki derse geçin.

Sıkça Sorulan Sorular

“Özel Durum Sınıfları” dersi ücretsiz mi?

Evet — “Özel Durum Sınıfları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“Özel Durum Sınıfları” dersinde ne öğreneceğim?

Hataları daha açık biçimde iletmek için kendi özel durum türlerinizi tanımlayın. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Özel Durum Sınıfları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Özel Durumları Anlama
  2. try / except / else / finally
  3. Özel Durum Oluşturma ve Yeniden Oluşturma
  4. Özel Durum Sınıfları
← Python Academy Sayfasına Dön