Co to są wyjątki i jak je obsługiwać w Pythonie?

Co to są wyjątki w Pythonie?

Wyjątki w Pythonie to mechanizmy, które pozwalają na obsługę błędów i nieoczekiwanych sytuacji w kodzie. Są one integralną częścią języka i umożliwiają programistom zarządzanie błędami w sposób kontrolowany, zamiast pozwalać na awarię programu. Wyjątki są podklasami klasy bazowej BaseException, a najczęściej używaną klasą jest Exception.

Rodzaje wyjątków

W Pythonie istnieje wiele wbudowanych wyjątków, które można podzielić na kilka kategorii:

  • SyntaxError: Błąd składniowy, który występuje, gdy kod nie jest poprawnie napisany.
  • TypeError: Błąd typu, który występuje, gdy operacja jest wykonywana na nieodpowiednim typie danych.
  • ValueError: Błąd wartości, który występuje, gdy funkcja otrzymuje argument o nieodpowiedniej wartości.
  • IndexError: Błąd indeksu, który występuje, gdy próbujemy uzyskać dostęp do elementu listy za pomocą nieprawidłowego indeksu.
  • KeyError: Błąd klucza, który występuje, gdy próbujemy uzyskać dostęp do nieistniejącego klucza w słowniku.

Jak obsługiwać wyjątki w Pythonie?

Obsługa wyjątków w Pythonie odbywa się za pomocą konstrukcji try i except. Poniżej znajduje się podstawowy przykład:

try:
    # Kod, który może wywołać wyjątek
    wynik = 10 / 0
except ZeroDivisionError:
    # Kod obsługujący wyjątek
    print("Nie można dzielić przez zero!")

W powyższym przykładzie, jeśli wystąpi błąd dzielenia przez zero, zostanie on przechwycony przez blok except, a program nie zakończy się awarią.

Blok finally

Blok finally jest używany do wykonania kodu, który powinien zostać uruchomiony niezależnie od tego, czy wyjątek wystąpił, czy nie. Jest to przydatne do zwalniania zasobów, takich jak pliki czy połączenia sieciowe.

try:
    plik = open("dane.txt", "r")
    # Operacje na pliku
except FileNotFoundError:
    print("Plik nie został znaleziony.")
finally:
    plik.close()

Podnoszenie wyjątków

W Pythonie można również ręcznie podnieść wyjątek za pomocą słowa kluczowego raise. Jest to przydatne, gdy chcemy zgłosić błąd w określonych warunkach.

def sprawdz_wiek(wiek):
    if wiek < 0:
        raise ValueError("Wiek nie może być ujemny!")
    return True

try:
    sprawdz_wiek(-1)
except ValueError as e:
    print(e)

Przykład praktyczny

Rozważmy bardziej złożony przykład, w którym obsługujemy różne typy wyjątków:

def oblicz(a, b):
    try:
        wynik = a / b
        print(f"Wynik: {wynik}")
    except ZeroDivisionError:
        print("Błąd: Dzielenie przez zero!")
    except TypeError:
        print("Błąd: Nieprawidłowy typ danych!")
    except Exception as e:
        print(f"Nieoczekiwany błąd: {e}")
    finally:
        print("Operacja zakończona.")

# Testowanie funkcji
oblicz(10, 2)
oblicz(10, 0)
oblicz(10, "a")

Podsumowanie

Wyjątki w Pythonie są potężnym narzędziem do zarządzania błędami i nieoczekiwanymi sytuacjami w kodzie. Dzięki konstrukcjom try, except, finally oraz raise, programiści mogą tworzyć bardziej niezawodne i odporne na błędy aplikacje. Pamiętaj, aby zawsze dokładnie obsługiwać wyjątki i zapewniać odpowiednie komunikaty błędów, co znacznie ułatwi debugowanie i utrzymanie kodu.

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Scroll to Top