CodeGym /Kursy /Python SELF PL /Popularne wyjątki

Popularne wyjątki

Python SELF PL
Poziom 17 , Lekcja 1
Dostępny

2.1 Tworzenie wyjątków

Jeśli nie możesz pokonać - przewodź. Skoro nie możemy uniknąć pojawienia się błędów w programie, musimy nauczyć się je kontrolować. A zatem nauczmy się świadomie tworzyć wyjątki.

Najprostszy przykład wyjątku — to dzielenie przez zero. No i program też jest prosty:


x = 100 / 0
        

Taki kod zakończy się błędem:


Traceback (most recent call last):
    File "", line 1, in 
         x = 100 / 0
        ~~~^~   
ZeroDivisionError: division by zero
        

ZeroDivisionError — to nazwa wyjątku, a division by zero — jego krótkie wyjaśnienie. Python również poda numer linii, gdzie wyjątek wystąpił.

Niezgodność typów danych

Oczywiście, możliwe są inne wyjątki. Na przykład, przy próbie dodania stringu i liczby:


s = "100" + 100
        

Wystąpi wyjątek TypeError:


Traceback (most recent call last):
    File "", line 1, in 
TypeError: unsupported operand type(s) for +: 'str' and 'int'
        

Wyjście poza zakres listy

Kolejny bardzo powszechny błąd generujący wyjątek — to próba odwołania się do elementu, który nie istnieje w liście:


my_list = [1, 2, 3]
print(my_list[10])
        

Wystąpi wyjątek IndexError:


Traceback (most recent call last):
    print(my_list[10])
        ~~~~~~~^^^^
IndexError: list index out of range
        

Ile ich jest? Jest tysiące różnych typów wyjątków. Co więcej, możesz stworzyć swoje własne, jeśli te istniejące nie wystarczają do opisania jakiejś szczególnej sytuacji. Chociaż najbardziej popularnych nie jest zbyt wiele.

2.2 Lista najpopularniejszych wyjątków

Wyjątków jest wiele, ale jako nowicjuszowi przyda ci się wiedza o tych najbardziej popularnych. Poniżej znajdziesz tabelę z nimi:

Wyjątek Opis
Exception Podstawowa klasa dla wszystkich wyjątków.
IndexError Występuje przy odwołaniu do nieistniejącego indeksu w sekwencji (np. lista lub krotka).
KeyError Występuje przy odwołaniu do nieistniejącego klucza w słowniku.
NameError Występuje przy odwołaniu do nieistniejącej zmiennej.
RuntimeError Występuje przy ogólnym błędzie czasu wykonania, który nie należy do innych typów wyjątków.
StopIteration Występuje dla sygnalizacji zakończenia iteracji.
SyntaxError Występuje przy błędzie składni w kodzie.
IndentationError Występuje przy błędzie wcięć w kodzie (podtyp SyntaxError).
TabError Występuje przy mieszaniu tabulacji i spacji dla wcięć (podtyp IndentationError).
TypeError Występuje przy próbie wykonania operacji z niekompatybilnymi typami danych.
UnboundLocalError Występuje przy odwołaniu do lokalnej zmiennej przed jej deklaracją (podtyp NameError).
ValueError Występuje przy przekazaniu funkcji lub operacji argumentu z nieprawidłową wartością.
ZeroDivisionError Występuje przy dzieleniu przez zero.

Najprawdopodobniej jako początkujący w pierwszym miesiącu nauki zetkniesz się ze wszystkimi tymi błędami. I nie ma w tym nic złego - na błędach się uczymy.

2.3 Błędy w kodzie

Przyjrzyjmy się jeszcze kilku sytuacjom, gdy w kodzie występują błędy, aby łatwiej było je potem znajdować w swoim kodzie:

IndentationError

Ten typ błędu występuje, gdy wcięcia w kodzie są nieprawidłowe. Na przykład, mieszanie tabulacji i spacji lub nieprawidłowa liczba wcięć.


def example():
    print("Hello")
     print("World")  # Nieprawidłowe wcięcie powoduje IndentationError
        
example()
        

NameError


def example():
    print(undeclared_variable)  # Próba użycia niezadeklarowanej zmiennej powoduje NameError
        
example()
        

ValueError

Ten typ błędu występuje, gdy operacja lub funkcja otrzymuje argument prawidłowego typu, ale o nieodpowiedniej wartości.


def example():
    int("abc")  # Próba przekształcenia stringu, który nie jest liczbą, powoduje ValueError
        
example()
        

KeyError

Ten typ błędu występuje, gdy program próbuje uzyskać dostęp do nieistniejącego klucza w słowniku.


def example():
    my_dict = {"a": 1, "b": 2}
    print(my_dict["c"])  # Próba dostępu do nieistniejącego klucza powoduje KeyError
        
example()
        

SyntaxError

Ten typ błędu występuje, gdy w kodzie jest błąd składniowy, czyli kod nie jest zgodny z gramatyką języka Python.


def example():
    eval("if True print('Hello')")  # Nieprawidłowa składnia powoduje SyntaxError
        
example()
        

Kto jest uprzedzony, ten uzbrojony. Teraz możesz rozpoznawać i tworzyć sytuacje, które powodują błędy. Nadszedł czas, aby nauczyć się obsługiwać te błędy.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION