0Pricing
Python Academy · Ders

Özel Durum Oluşturma ve Yeniden Oluşturma

Hataları bildirmek için raise kullanın; yayılım için özel durumları yeniden oluşturun.

Özel Durum Oluşturma ve Yeniden Oluşturma, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 3. 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ş

raise anahtar sözcüğü, hataları açıkça bildirmenizi sağlar. İstisnayı yeniden oluşturmak, özgün hata bağlamını korur.

Yerleşik İstisna Oluşturma

raise ValueError('message'), verilen iletiyle bu istisna türünü hemen oluşturur.
def divide(a, b):
    if b == 0:
        raise ValueError('Denominator cannot be zero')
    return a / b
try:
    divide(5, 0)
except ValueError as e:
    print(e)

Aynı İstisnayı Yeniden Oluşturma

except içinde raise (bağımsız değişkensiz), geçerli istisnayı yeniden oluşturur ve özgün iz geri bildirimini korur.
def process(data):
    try:
        return int(data)
    except ValueError:
        print('logging error')
        raise  # re-raises original
try:
    process('abc')
except ValueError:
    print('caller caught it')

from ile İstisna Zincirleme

raise NewError('msg') from original, istisnaları birbirine bağlar. exc.__cause__ ayarlanır.
try:
    int('abc')
except ValueError as original:
    raise RuntimeError('processing failed') from original

Zincirlemeyi Bastırma

raise NewError() from None zinciri kırar; özgün istisna iz geri bildiriminde bastırılır.
try:
    int('abc')
except ValueError:
    raise RuntimeError('clean error') from None

assert İfadesi

assert condition, 'message', condition False ise AssertionError oluşturur. Yalnızca geliştirme sırasındaki değişmez koşullar için kullanın.
def sqrt(x):
    assert x >= 0, f'Input must be non-negative, got {x}'
    return x ** 0.5
try:
    sqrt(-1)
except AssertionError as e:
    print(e)

Koşullu İstisna Oluşturma

Bir işlevin başında raise içeren koruma yan tümceleri, ön koşulları açıkça belirtir ve derin iç içe yapıları önler.
def process(items):
    if not items:
        raise ValueError('items must not be empty')
    return items[0]
print(process([1, 2, 3]))

İstisnayı Yeniden Oluşturma ve Yeni İstisna

Yeniden oluşturma (yalın raise) bağlamı korur. Yeni istisna ise bağlamı gizler. Her ikisini de görünür tutmak için zincirleme kullanın.
def outer():
    try:
        inner()
    except ValueError as e:
        raise RuntimeError('outer failed') from e
def inner():
    raise ValueError('inner failed')
try:
    outer()
except RuntimeError as e:
    print(e, e.__cause__)

finally İçinde İstisna

finally içinde istisna oluşturmak özgün istismanın yerini alır. Kesinlikle gerekli olmadıkça finally içinde istisna oluşturmaktan kaçının.
try:
    try:
        raise ValueError('original')
    finally:
        print('finally ran')
except ValueError as e:
    print('caught:', e)

warnings.warn ve raise

Kurtarılabilir hafif hatalar için warn(), mutlaka yönetilmesi gereken hatalar için raise kullanın. Farklı amaçlara hizmet ederler.
import warnings
def old_func():
    warnings.warn('Deprecated', DeprecationWarning)
    return 42
print(old_func())

raise from None Deseni

Kitaplık istisnalarını kendi API istisnalarınızla sararken, iç ayrıntıların sızmasını önlemek için from None kullanın.
class DBError(Exception): pass
def query(q):
    try:
        raise ConnectionError('refused')
    except ConnectionError:
        raise DBError('query failed') from None
try:
    query('SELECT 1')
except DBError as e:
    print(e)

Hızlı Kontrol

Bir except bloğunun içinde 'raise' (bağımsız değişkensiz) ne yapar?

Özet

raise Type('msg') hataları bildirir. Yalın raise istisnayı yeniden oluşturur. raise New from Old zincirleme yapar. raise New from None bağlamı bastırır. Geliştirme zamanı değişmez koşulları için assert kullanılır.

Devam Edin

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

Sıkça Sorulan Sorular

“Özel Durum Oluşturma ve Yeniden Oluşturma” dersi ücretsiz mi?

Evet — “Özel Durum Oluşturma ve Yeniden Oluşturma” 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 Oluşturma ve Yeniden Oluşturma” dersinde ne öğreneceğim?

Hataları bildirmek için raise kullanın; yayılım için özel durumları yeniden oluşturun. 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 3. dersidir.

“Özel Durum Oluşturma ve Yeniden Oluşturma” 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