Sobes.tech
Junior

Milyen jellemzői vannak a kivételkezelésnek Pythonban?

sobes.tech MI

Válasz az MI-től

A Python kivételkezelése események, amelyek megszakítják a program normál végrehajtási folyamatát. Objektumként reprezentálják a hibákat.

Jellemzők:

  • Kivételhierarchia: Minden beépített kivétel osztály, és öröklődésen alapuló hierarchiába szerveződik a BaseException ősosztályból.
    # Hierarchia példa
    # BaseException -> Exception -> StandardError -> ...
    #                  Exception -> ArithmeticError -> ZeroDivisionError
    
  • try...except... blokk: A kivételkezelés fő mechanizmusa.
    try:
        # Kód, ami kivételt okozhat
        result = 10 / 0
    except ZeroDivisionError:
        # Konkrét kivétel kezelése
        print("Nullával való osztás!")
    except Exception as e:
        # Egyéb kivételek kezelése
        print(f"Hiba történt: {e}")
    
  • Többszörös except blokkok: Lehetővé teszik különböző típusú kivételek eltérő kezelését.
    try:
        # Kód
        value = int("abc")
    except ValueError:
        print("Érvénytelen számformátum.")
    except TypeError:
        print("Érvénytelen adattípus.")
    
  • else blokk: Akkor fut le, ha a try blokk kivétel nélkül fejeződik be.
    try:
        # Kód
        result = 10 / 2
    except ZeroDivisionError:
        print("Nullával való osztás!")
    else:
        print("Sikeresen végrehajtva.")
    
  • finally blokk: Mindig végrehajtódik, függetlenül attól, hogy történt-e kivétel vagy sem. Erőforrások felszabadítására használható.
    file = None
    try:
        file = open("myfile.txt", "r")
        # Fájl olvasása
    except FileNotFoundError:
        print("A fájl nem található.")
    finally:
        if file:
            file.close() # A fájl garantált bezárása
    
  • raise operátor: Szándékosan kivétel kiváltására használható.
    def divide(a, b):
        if b == 0:
            raise ZeroDivisionError("Nem lehet nullával osztani")
        return a / b
    
    try:
        divide(10, 0)
    except ZeroDivisionError as e:
        print(f"Hiba: {e}")
    
  • Egyéni kivételek: Saját kivétel osztályokat hozhatunk létre, öröklődve az Exception vagy más meglévő kivétel osztályból.
    class CustomError(Exception):
        pass
    
    def process_data(data):
        if not data:
            raise CustomError("Üres adatok")
    
    try:
        process_data([])
    except CustomError as e:
        print(f"Hiba: {e}")
    
  • Kivételkezelés a with kontextuskezelővel: Egyszerűsíti az erőforrások kezelését, amelyeknek explicit zárásra van szükségük (pl. fájlok).
    try:
        with open("myfile.txt", "r") as file:
            # Fájl műveletek
            content = file.read()
    except FileNotFoundError:
        print("A fájl nem található.")
    # A fájl automatikusan bezáródik a `with` blokk végén
    
  • Kivétel láncolás: A kivételkezelés során megőrizhető az előzőleg kezelt kivétel információja (implicitly vagy raise Exception from another_exception használatával).

Ezek a jellemzők rugalmas és erőteljes hibakezelő mechanizmust biztosítanak Pythonban, lehetővé téve megbízhatóbb és hibára ellenállóbb programok készítését.