Sobes.tech
Junior

Python-da istisnaları müxtəlif üsullarla düzgün şəkildə necə işləmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

İstisnalar try, except, else, finally blokları ilə idarə olunur.

Əsas idarəetmə növləri:

  1. Əsas tutma: Hər hansı bir istisnanı tutar.

    try:
        # İstisna yarada biləcək kod
        result = 10 / 0
    except:
        # Hər hansı istisnanın idarə olunması
        print("Xəta baş verdi.")
    
  2. Müəyyən bir istisnanı tutma: Konkret bir istisna növünü tutar.

    try:
        # İstisna yarada biləcək kod
        result = 10 / 0
    except ZeroDivisionError:
        # Sıfıra bölmənin idarə olunması
        print("Xəta: sıfıra bölmə.")
    
  3. Bir neçə istisnanı tutma: Bir neçə istisna növünü tutar.

    try:
        # İstisna yarada biləcək kod
        data = [1, 2, 3]
        print(data[5])
        result = 10 / 0
    except (IndexError, ZeroDivisionError):
        # İndeks və ya sıfıra bölmə xətalarının idarə olunması
        print("İndeks və ya sıfıra bölmə xətası baş verdi.")
    
  4. İstisnaya çıxış və istisna obyektinə giriş: Xəta haqqında məlumat əldə etməyə imkan verir.

    try:
        # İstisna yarada biləcək kod
        result = int("abc")
    except ValueError as e:
        # Dəyişmə xətasının idarə olunması, e xətə haqqında məlumat saxlayır
        print(f"Dəyər xətası: {e}")
    
  5. else istifadə: Əgər istisna baş verməzsə, icra olunur.

    try:
        # Xəta olmayan kod
        result = 10 / 2
    except ZeroDivisionError:
        print("Xəta: sıfıra bölmə.")
    else:
        # Xəta yoxdursa icra olunur
        print(f"Nəticə: {result}")
    
  6. finally istifadə: Hər zaman icra olunur, istisna olub-olmamasından asılı olmayaraq. Resursların azad olunması üçün istifadə olunur.

    file = None
    try:
        file = open("myfile.txt", "r")
        # Fayldan oxuma və ya digər əməliyyatlar
    except FileNotFoundError:
        print("Fayl tapılmadı.")
    finally:
        # Fayl açıqdırsa, bağlanır
        if file:
            file.close()
            print("Fayl bağlandı.")
    
  7. raise istisnaları qaldırmaq üçün: İstisnaları yaratmaq üçün istifadə olunur.

    def divide(a, b):
        if b == 0:
            # İstisna qaldırılır
            raise ZeroDivisionError("Sıfıra bölmək olmaz!")
        return a / b
    
    try:
        print(divide(10, 0))
    except ZeroDivisionError as e:
        print(f"Əldə olunan istisna: {e}")
    
  8. raise ... from ... istisnaları birləşdirmək üçün: Yeni istisnanı əvvəlki ilə əlaqələndirməyə imkan verir.

    try:
        result = 1 / 0
    except ZeroDivisionError as e:
        # Yeni istisna qaldırılır və əvvəlki ilə əlaqələndirilir
        raise RuntimeError("Daxili xəta baş verdi") from e
    
  9. with open(...) kontekst menecerindən istifadə: Resursun düzgün bağlanmasını təmin edir (məsələn, fayl).

    try:
        with open("myfile.txt", "r") as file:
            content = file.read()
            print(content)
        # fayl avtomatik olaraq bağlanır
    except FileNotFoundError:
        print("Fayl tapılmadı.")
    

İstisna idarəetmə bloklarının xülasəsi:

Blok Təsviri Nə zaman icra olunur
try İstisnaların baş verə biləcəyi kod bloku Həmişə
except try daxilində baş verən istisnaların idarə olunması Əgər istisna baş verərsə
else try daxilində istisna baş verməzsə, icra olunur Əgər istisna yoxdursa
finally Hər zaman icra olunur, istisna olub-olmamasından asılı olmayaraq Həmişə

Yöntəm seçimi vəziyyətə və istənilən detallıq səviyyəsinə görə dəyişir. Yalnız düzgün idarə edə biləcəyiniz istisnaları tutmaq və çox geniş tutmalardan (except:) çəkinmək vacibdir.