Sobes.tech
Junior

Python-da istisna emalının xüsusiyyətləri nələrdir?

sobes.tech Süni İntellekt

AI-dan cavab

Python-da istisnalar, proqramın normal icra axınına maneə törədən hadisələrdir. Onlar səhvləri təmsil edən obyektlərdir.

Xüsusiyyətlər:

  • İstisnalar hierarxiyası: Bütün daxili istisnalar siniflərdir və BaseException əsas sinfindən irsən təşkil olunmuşdur.
    # Hierarxiya nümunəsi
    # BaseException -> Exception -> StandardError -> ...
    #                  Exception -> ArithmeticError -> ZeroDivisionError
    
  • try...except... blokları: Əsas istisna idarəetmə mexanizmi.
    try:
        # İstisna yarada biləcək kod
        result = 10 / 0
    except ZeroDivisionError:
        # Xüsusi istisnanın idarə olunması
        print("Sıfıra bölmə!")
    except Exception as e:
        # Digər istisnaların idarə olunması
        print(f"Xəta baş verdi: {e}")
    
  • Çoxsaylı except blokları: Müxtəlif istisna növlərini fərqli şəkildə idarə etməyə imkan verir.
    try:
        # Kod
        value = int("abc")
    except ValueError:
        print("Yanlış rəqəm formatı.")
    except TypeError:
        print("Yanlış məlumat tipi.")
    
  • else bloku: try bloku heç bir istisna baş vermədən tamamlanarsa işləyir.
    try:
        # Kod
        result = 10 / 2
    except ZeroDivisionError:
        print("Sıfıra bölmə!")
    else:
        print("Əməliyyat uğurla tamamlandı.")
    
  • finally bloku: Həmişə işləyir, istisna baş veribsə və ya yox. Resursların azad olunması üçün istifadə olunur.
    file = None
    try:
        file = open("myfile.txt", "r")
        # Fayldən oxuma
    except FileNotFoundError:
        print("Fayl tapılmadı.")
    finally:
        if file:
            file.close() # Faylın mütləq bağlanması
    
  • raise operatoru: Açıq şəkildə istisna atmaq üçün istifadə olunur.
    def divide(a, b):
        if b == 0:
            raise ZeroDivisionError("Sıfıra bölmək olmaz")
        return a / b
    
    try:
        divide(10, 0)
    except ZeroDivisionError as e:
        print(f"Xəta: {e}")
    
  • Fərdi istisnalar: Öz istisna sinflərinizi Exception və ya digər mövcud istisna sinfindən irsən yarada bilərsiniz.
    class CustomError(Exception):
        pass
    
    def process_data(data):
        if not data:
            raise CustomError("Məlumatlar boşdur")
    
    try:
        process_data([])
    except CustomError as e:
        print(f"Xəta: {e}")
    
  • with kontekst menecerindən istifadə etməklə istisnaların idarə olunması: Resurslarla işləməni sadələşdirir, məsələn, fayllar kimi, onları bağlamağı tələb edir.
    try:
        with open("myfile.txt", "r") as file:
            # Fayl ilə işləmək
            content = file.read()
    except FileNotFoundError:
        print("Fayl tapılmadı.")
    # Fayl avtomatik olaraq `with` blokundan çıxanda bağlanır
    
  • İstisnaların zəncirlənməsi: Bir istisna işlənərkən, əvvəlki istisna haqqında məlumat saxlamaq mümkündür (qeyri-rəsmi və ya raise Exception from another_exception istifadə edilərək).

Bu xüsusiyyətlər Python-da səhv idarəetməsi üçün çevik və güclü mexanizm təmin edir, daha etibarlı və uğursuzluqlara davamlı proqramlar yaratmağa imkan verir.