0Pricing
Python Academy · Lekcja

Zrozumienie wyjątków

Proszę poznać wyjątki oraz dowiedzieć się, jak Python je zgłasza.

Zrozumienie wyjątków to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Wprowadzenie

Wyjątki są mechanizmem języka Python służącym do sygnalizowania i obsługi błędów w czasie wykonywania programu.

Czym jest wyjątek?

Wyjątek to zdarzenie, które zakłóca normalny przebieg programu. Python zgłasza wyjątki, gdy wystąpią błędy — na przykład podczas dzielenia przez zero.
# 1 / 0  # raises ZeroDivisionError
print('exceptions demo')

Hierarchia wyjątków

Wszystkie wyjątki dziedziczą po BaseException. Większość wyjątków dotyczących użytkownika dziedziczy po Exception. Konkretne typy to między innymi ValueError, TypeError i KeyError.
print(issubclass(ValueError, Exception))
print(issubclass(Exception, BaseException))

Typowe wbudowane wyjątki

TypeError: nieprawidłowy typ. ValueError: prawidłowy typ, nieprawidłowa wartość. KeyError: brak klucza słownika. IndexError: indeks listy poza zakresem. AttributeError: brak danego atrybutu.
# Examples:
# int('abc')       -> ValueError
# d['missing']     -> KeyError
# [1,2][9]         -> IndexError
print('common exceptions')

Traceback

Gdy wyjątek nie zostanie obsłużony, Python wyświetla traceback: stos wywołań od dołu (najbardziej aktualnego wywołania) do góry. Należy nauczyć się go czytać.
def f(): return 1/0
# f()  # shows traceback
print('traceback demo')

Obiekt wyjątku

Każdy wyjątek zawiera komunikat. str(e) lub e.args udostępnia opis. W bloku except można uzyskać do niego dostęp jako: except ValueError as e.
try:
    int('abc')
except ValueError as e:
    print(type(e).__name__, e)

Przechwytywanie wielu typów

except (TypeError, ValueError): przechwytuje oba typy w jednej klauzuli.
def parse(x):
    try:
        return int(x)
    except (TypeError, ValueError):
        return None
print(parse('abc'), parse(None))

ExceptionGroup (3.11+)

Python 3.11 wprowadza ExceptionGroup do obsługi wielu wyjątków występujących jednocześnie; służy do tego składnia except*.
# Python 3.11+:
# try: ...
# except* ValueError as eg:
#     print(eg.exceptions)
print('exception group demo')

Ostrzeżenia a wyjątki

import warnings; warnings.warn('msg') zgłasza ostrzeżenie bez wywoływania wyjątku. Należy go używać w przypadku przestarzałych funkcji i błędów niekrytycznych.
import warnings
warnings.warn('This is deprecated', DeprecationWarning)
print('warning issued')

sys.exc_info()

W bloku except funkcja sys.exc_info() zwraca (type, value, traceback) — jest przydatna do rejestrowania pełnych informacji o wyjątku.
import sys
try:
    1/0
except:
    exc_type, exc_val, _ = sys.exc_info()
    print(exc_type, exc_val)

Łączenie wyjątków

raise NewError('msg') from original_exc łączy wyjątki. Atrybut __cause__ przechowuje powiązanie między nimi.
try:
    int('abc')
except ValueError as e:
    raise RuntimeError('parse failed') from e

Szybkie sprawdzenie

Jaki wyjątek jest zgłaszany podczas uzyskiwania dostępu do słownika za pomocą nieistniejącego klucza?

Podsumowanie

Wyjątki dziedziczą po BaseException. Traceback należy czytać od dołu do góry. Wyjątki przechwytuje się za pomocą except as e. Typowe typy to ValueError, TypeError, KeyError, IndexError i AttributeError.

Kontynuuj naukę

Świetna praca! Przejdź do następnej lekcji, aby kontynuować naukę.

Często zadawane pytania

Czy lekcja „Zrozumienie wyjątków” jest bezpłatna?

Tak — pełny tekst „Zrozumienie wyjątków” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zrozumienie wyjątków”?

Proszę poznać wyjątki oraz dowiedzieć się, jak Python je zgłasza. Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Zrozumienie wyjątków”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Zrozumienie wyjątków
  2. try / except / else / finally
  3. Zgłaszanie i ponowne zgłaszanie wyjątków
  4. Niestandardowe klasy wyjątków
← Powrót do Python Academy