Sobes.tech
Junior
239

Aké konštrukcie na spracovanie výnimiek existujú v Pythone?

Odpoveď od AI

sobes.tech AI

V Pythone sa používajú nasledujúce konštrukcie na spracovanie výnimiek:

  • try...except: Základ spracovania výnimiek. Blok try obsahuje kód, ktorý môže spôsobiť výnimku. Ak dôjde k výnimke, vykoná sa príslušný blok except.

    # Príklady použitia try...except
    try:
        result = 10 / 0  # Pokus o delenie nulou
    except ZeroDivisionError:
        print("Chyba: Delenie nulou!")
    
  • except Exception as e: Zachytáva akúkoľvek výnimku a priraďuje ju objektu e na ďalšie spracovanie (napríklad logovanie alebo zobrazenie správy).

    # Zachytenie akejkoľvek výnimky
    try:
        value = int("abc")
    except Exception as e:
        print(f"Vyskytla sa chyba: {e}")
    
  • Viaceré bloky except: Umožňujú spracovať rôzne typy výnimiek odlišne.

    # Spracovanie viacerých typov výnimiek
    try:
        file = open("non_existent_file.txt", "r")
        content = file.read()
        file.close()
    except FileNotFoundError:
        print("Chyba: Súbor nebol nájdený!")
    except IOError:
        print("Chyba vstupu/výstupu!")
    
  • except (...): Zlúčenie viacerých typov výnimiek do jedného bloku.

    # Zlúčenie typov výnimiek
    try:
        some_operation()
    except (ValueError, TypeError):
        print("Chyba hodnoty alebo typu!")
    
  • try...except...else: Blok else sa vykoná, ak v bloku try nedôjde k výnimke.

    # Použitie else
    try:
        num1 = 10
        num2 = 2
        result = num1 / num2
    except ZeroDivisionError:
        print("Chyba: Delenie nulou!")
    else:
        print(f"Výsledok delenia: {result}")
    
  • try...except...finally: Blok finally sa vykoná vždy, bez ohľadu na to, či došlo k výnimke alebo nie. Používa sa na uvoľnenie zdrojov (napríklad zatvorenie súborov).

    # Použitie finally
    file = None
    try:
        file = open("data.txt", "r")
        content = file.read()
    except FileNotFoundError:
        print("Súbor nebol nájdený.")
    finally:
        if file:
            file.close()
            print("Súbor zatvorený.")
    
  • raise: Umožňuje výslovne vyvolať výnimku.

    # Výslovné vyvolanie výnimky
    def validate_age(age):
        if age < 0:
            raise ValueError("Vek nemôže byť záporný!")
        return age
    
    try:
        validate_age(-5)
    except ValueError as e:
        print(f"Chyba pri validácii: {e}")