Błędy Pythona i wbudowane wyjątki

W tym samouczku dowiesz się o różnych typach błędów i wyjątków wbudowanych w Python. Są one wywoływane za każdym razem, gdy interpreter języka Python napotka błędy.

Wideo: Obsługa wyjątków w języku Python

Podczas pisania programu możemy popełnić pewne błędy, które prowadzą do błędów przy próbie jego uruchomienia. Program w Pythonie kończy działanie, gdy tylko napotka nieobsługiwany błąd. Błędy te można ogólnie podzielić na dwie klasy:

  1. Błędy składniowe
  2. Błędy logiczne (wyjątki)

Błędy składni Pythona

Błąd spowodowany nieprzestrzeganiem właściwej struktury (składni) języka nazywany jest błędem składniowym lub błędem analizy .

Spójrzmy na jeden przykład:

 >>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax

Jak pokazano w przykładzie, strzałka wskazuje, gdzie parser napotkał błąd składni.

Możemy tu zauważyć, że :w ifstwierdzeniu brakuje dwukropka .

Błędy logiczne w Pythonie (wyjątki)

Błędy występujące w czasie wykonywania (po przejściu testu składni) nazywane są wyjątkami lub błędami logicznymi .

Na przykład pojawiają się, gdy próbujemy otworzyć plik (do odczytu), który nie istnieje ( FileNotFoundError), próbujemy podzielić liczbę przez zero ( ZeroDivisionError) lub próbujemy zaimportować moduł, który nie istnieje ( ImportError).

Zawsze, gdy wystąpią tego typu błędy w czasie wykonywania, Python tworzy obiekt wyjątku. Jeśli nie zostanie prawidłowo obsłużony, drukuje ślad zwrotny do tego błędu wraz z niektórymi szczegółami dotyczącymi przyczyny wystąpienia tego błędu.

Spójrzmy, jak Python traktuje te błędy:

 >>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'

Wyjątki wbudowane w Pythonie

Nielegalne operacje mogą powodować wyjątki. W Pythonie jest wiele wbudowanych wyjątków, które są zgłaszane, gdy wystąpią odpowiednie błędy. Możemy wyświetlić wszystkie wbudowane wyjątki za pomocą funkcji wbudowanej w local()następujący sposób:

 print(dir(locals()('__builtins__')))

locals()('__builtins__')zwróci moduł wbudowanych wyjątków, funkcji i atrybutów. dirpozwala nam wyświetlić te atrybuty jako ciągi.

Poniżej wymieniono niektóre typowe wbudowane wyjątki w programowaniu w Pythonie wraz z błędami, które je powodują:

Wyjątek Przyczyna błędu
AssertionError Podnoszone, gdy assertinstrukcja nie powiedzie się.
AttributeError Wywoływane, gdy przypisanie atrybutu lub odwołanie nie powiedzie się.
EOFError Podnoszone, gdy input()funkcja osiągnie warunek końca pliku.
FloatingPointError Podnoszone, gdy operacja zmiennoprzecinkowa nie powiedzie się.
GeneratorExit Podnieś, gdy close()zostanie wywołana metoda generatora .
ImportError Podnoszone, gdy zaimportowany moduł nie zostanie znaleziony.
IndexError Podnoszony, gdy indeks sekwencji jest poza zakresem.
KeyError Wywoływane, gdy klucz nie zostanie znaleziony w słowniku.
KeyboardInterrupt Podnoszone, gdy użytkownik naciśnie klawisz przerwania ( Ctrl+Club Delete).
MemoryError Podnoszone, gdy w operacji zabraknie pamięci.
NameError Wywoływane, gdy zmienna nie zostanie znaleziona w zakresie lokalnym lub globalnym.
NotImplementedError Podniesione abstrakcyjnymi metodami.
OSError Podnoszone, gdy działanie systemu powoduje błąd związany z systemem.
OverflowError Podnoszony, gdy wynik operacji arytmetycznej jest zbyt duży, aby można go było przedstawić.
ReferenceError Wywoływane, gdy słaby odwołanie proxy jest używane w celu uzyskania dostępu do elementu referencyjnego zebranego bezużyteczności.
RuntimeError Podnoszone, gdy błąd nie należy do żadnej innej kategorii.
StopIteration Podniesiony przez next()funkcję, aby wskazać, że nie ma kolejnego elementu do zwrócenia przez iterator.
SyntaxError Wywoływane przez parser w przypadku napotkania błędu składni.
IndentationError Podnoszony, gdy występuje nieprawidłowe wcięcie.
TabError Wywoływane, gdy wcięcie składa się z niespójnych tabulatorów i spacji.
SystemError Podnoszone, gdy interpreter wykryje błąd wewnętrzny.
SystemExit Wychowany przez sys.exit()funkcję.
TypeError Wywoływane, gdy funkcja lub operacja jest stosowana do obiektu niepoprawnego typu.
UnboundLocalError Wywoływany, gdy następuje odwołanie do zmiennej lokalnej w funkcji lub metodzie, ale żadna wartość nie została powiązana z tą zmienną.
UnicodeError Wywoływane, gdy wystąpi błąd kodowania lub dekodowania związany z Unicode.
UnicodeEncodeError Wywoływane, gdy podczas kodowania wystąpi błąd związany z Unicode.
UnicodeDecodeError Wywoływane, gdy podczas dekodowania wystąpi błąd związany z Unicode.
UnicodeTranslateError Wywoływane, gdy podczas tłumaczenia wystąpi błąd związany z Unicode.
ValueError Wywoływane, gdy funkcja otrzymuje argument o poprawnym typie, ale niewłaściwej wartości.
ZeroDivisionError Podnoszony, gdy drugi argument operacji dzielenia lub modulo ma wartość zero.

W razie potrzeby możemy również zdefiniować własne wyjątki w Pythonie. Aby dowiedzieć się więcej na ich temat, odwiedź stronę Wyjątki zdefiniowane przez użytkownika w języku Python.

Możemy obsłużyć te wbudowane i zdefiniowanym przez użytkownika wyjątków w Pythonie przy użyciu try, exceptoraz finallyoświadczenia. Aby dowiedzieć się więcej na ich temat, odwiedź Python try, z wyjątkiem i na końcu instrukcji.

Interesujące artykuły...