Sobes.tech
Junior

Aké sú vlastnosti spracovania výnimiek v Pythone?

sobes.tech AI

Odpoveď od AI

Výnimky v Pythone sú udalosti, ktoré narušujú štandardný priebeh vykonávania programu. Predstavujú objekty, ktoré označujú chyby.

Vlastnosti:

  • Hierarchia výnimiek: Všetky vstavané výnimky sú triedy a sú organizované do hierarchie založenej na dedičnosti od základnej triedy BaseException.
    # Príklad hierarchie
    # BaseException -> Exception -> StandardError -> ...
    #                  Exception -> ArithmeticError -> ZeroDivisionError
    
  • Bloky try...except...: Hlavný mechanizmus spracovania výnimiek.
    try:
        # Kód, ktorý môže spôsobiť výnimku
        result = 10 / 0
    except ZeroDivisionError:
        # Spracovanie konkrétnej výnimky
        print("Delenie nulou!")
    except Exception as e:
        # Spracovanie iných výnimiek
        print(f"Vyskytla sa chyba: {e}")
    
  • Viac except blokov: Umožňujú spracovanie rôznych typov výnimiek odlišne.
    try:
        # Kód
        value = int("abc")
    except ValueError:
        print("Neplatný formát čísla.")
    except TypeError:
        print("Neplatný dátový typ.")
    
  • Blok else: Spúšťa sa, ak blok try skončí bez výnimky.
    try:
        # Kód
        result = 10 / 2
    except ZeroDivisionError:
        print("Delenie nulou!")
    else:
        print("Operácia úspešne dokončená.")
    
  • Blok finally: Vždy sa vykoná, bez ohľadu na to, či došlo k výnimke alebo nie. Používa sa na uvoľnenie zdrojov.
    file = None
    try:
        file = open("myfile.txt", "r")
        # Čítanie zo súboru
    except FileNotFoundError:
        print("Súbor nebol nájdený.")
    finally:
        if file:
            file.close() # Zaručené zatvorenie súboru
    
  • Operátor raise: Používa sa na jasné vyvolanie výnimky.
    def divide(a, b):
        if b == 0:
            raise ZeroDivisionError("Nemožno deliť nulou")
        return a / b
    
    try:
        divide(10, 0)
    except ZeroDivisionError as e:
        print(f"Chyba: {e}")
    
  • Vlastné výnimky: Môžete vytvárať vlastné triedy výnimiek dediace od Exception alebo inej existujúcej triedy výnimiek.
    class CustomError(Exception):
        pass
    
    def process_data(data):
        if not data:
            raise CustomError("Dáta sú prázdne")
    
    try:
        process_data([])
    except CustomError as e:
        print(f"Chyba: {e}")
    
  • Spracovanie výnimiek s použitím kontextového manažéra with: Zjednodušuje prácu s prostriedkami, ktoré vyžadujú explicitné zatvorenie (napríklad súbory).
    try:
        with open("myfile.txt", "r") as file:
            # Práca so súborom
            content = file.read()
    except FileNotFoundError:
        print("Súbor nebol nájdený.")
    # Súbor sa automaticky zatvorí pri opustení bloku 'with'
    
  • Lanenie výnimiek: Pri spracovaní výnimky je možné zachovať informácie o predchádzajúcej spracovanej výnimke (implicitne alebo s použitím raise Exception from another_exception).

Tieto vlastnosti poskytujú flexibilný a výkonný mechanizmus spracovania chýb v Pythone, umožňujúci vytvárať spoľahlivejšie a odolnejšie voči zlyhaniam programy.