Junior
Jakie są cechy obsługi wyjątków w Pythonie?
sobes.tech AI
Odpowiedź od AI
Wyjątki w Pythonie to zdarzenia, które zakłócają standardowy przebieg wykonywania programu. Są obiektami reprezentującymi błędy.
Cechy:
- Hierarchia wyjątków: Wszystkie wbudowane wyjątki są klasami i są zorganizowane w hierarchię opartą na dziedziczeniu od klasy bazowej
BaseException.# Przykład hierarchii # BaseException -> Exception -> StandardError -> ... # Exception -> ArithmeticError -> ZeroDivisionError - Bloki
try...except...: Główny mechanizm obsługi wyjątków.try: # Kod, który może wywołać wyjątek result = 10 / 0 except ZeroDivisionError: # Obsługa konkretnego wyjątku print("Dzielenie przez zero!") except Exception as e: # Obsługa innych wyjątków print(f"Wystąpił błąd: {e}") - Wiele bloków
except: Pozwalają obsługiwać różne typy wyjątków w różny sposób.try: # Kod value = int("abc") except ValueError: print("Nieprawidłowy format liczby.") except TypeError: print("Nieprawidłowy typ danych.") - Blok
else: Wykonuje się, jeśli bloktryzakończył się bez wyjątków.try: # Kod result = 10 / 2 except ZeroDivisionError: print("Dzielenie przez zero!") else: print("Operacja zakończona sukcesem.") - Blok
finally: Wykonuje się zawsze, niezależnie od tego, czy wystąpił wyjątek, czy nie. Służy do zwalniania zasobów.file = None try: file = open("myfile.txt", "r") # Czytanie z pliku except FileNotFoundError: print("Plik nie został znaleziony.") finally: if file: file.close() # Gwarantowane zamknięcie pliku - Operator
raise: Służy do jawnego rzucania wyjątku.def divide(a, b): if b == 0: raise ZeroDivisionError("Nie można dzielić przez zero") return a / b try: divide(10, 0) except ZeroDivisionError as e: print(f"Błąd: {e}") - Własne wyjątki: Można tworzyć własne klasy wyjątków dziedziczące z
Exceptionlub innej istniejącej klasy wyjątku.class CustomError(Exception): pass def process_data(data): if not data: raise CustomError("Dane są puste") try: process_data([]) except CustomError as e: print(f"Błąd: {e}") - Obsługa wyjątków z użyciem menedżera kontekstu
with: Ułatwia pracę z zasobami, które wymagają jawnego zamknięcia (np. plikami).try: with open("myfile.txt", "r") as file: # Praca z plikiem content = file.read() except FileNotFoundError: print("Plik nie został znaleziony.") # Plik jest automatycznie zamykany po wyjściu z bloku 'with' - Łańcuchowe wyjątki: Podczas obsługi wyjątku można zachować informacje o poprzednim wyjątku (implicitnie lub używając
raise Exception from another_exception).
Te cechy zapewniają elastyczny i potężny mechanizm obsługi błędów w Pythonie, umożliwiając tworzenie bardziej niezawodnych i odpornych na awarie programów.