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
exceptblokkok: 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.") elseblokk: Akkor fut le, ha atryblokk 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.")finallyblokk: 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ásaraiseoperá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
Exceptionvagy 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
withkontextuskezelő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_exceptionhaszná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.