Get started learning Python with DataCamp's free Intro to Python tutorial. Learn Data Science by completing interactive coding challenges and watching videos by expert instructors. Start Now!

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join 11 million other learners and get started learning Python for data science today!

Good news! You can save 25% off your Datacamp annual subscription with the code LEARNPYTHON23ALE25 - Click here to redeem your discount

Obsługa wyjątków


Kiedy programujesz, błędy się zdarzają. To po prostu fakt życia. Może użytkownik podał błędne dane wejściowe. Może zasób sieciowy był niedostępny. Może programowi zabrakło pamięci. Albo programista mógł nawet popełnić błąd!

Rozwiązaniem Pythona na błędy są wyjątki. Mogłeś wcześniej zauważyć wyjątek.

print(a)

#błąd
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

Ups! Zapomniano przypisać wartość do zmiennej 'a'.

Ale czasami nie chcesz, aby wyjątki całkowicie zatrzymywały program. Może chcesz zrobić coś specjalnego, gdy wyjątek zostanie zgłoszony. Jest to realizowane w bloku try/except.

Oto prosty przykład: Załóżmy, że iterujesz po liście. Musisz iterować po 20 liczbach, ale lista jest tworzona z danych wejściowych użytkownika i może nie mieć 20 liczb. Kiedy dotrzesz do końca listy, chcesz, aby pozostałe liczby były interpretowane jako 0. Oto jak możesz to zrobić:

def do_stuff_with_number(n):
    print(n)

def catch_this():
    the_list = (1, 2, 3, 4, 5)

    for i in range(20):
        try:
            do_stuff_with_number(the_list[i])
        except IndexError: # Podniesiony, gdy próbujemy uzyskać dostęp do nieistniejącego indeksu listy
            do_stuff_with_number(0)

catch_this()

Tam, to nie było takie trudne! Możesz to zrobić z każdym wyjątkiem. Po więcej szczegółów na temat obsługi wyjątków zajrzyj do Dokumentacji Pythona

Ćwiczenie

Obsłuż wszystkie wyjątki! Przypomnij sobie poprzednie lekcje, aby zwrócić nazwisko aktora.

# Setup actor = {"name": "John Cleese", "rank": "awesome"} # Function to modify!!! def get_last_name(): return actor["last_name"] # Test code get_last_name() print("All exceptions caught! Good job!") print("The actor's last name is %s" % get_last_name()) actor = {"name": "John Cleese", "rank": "awesome"} def get_last_name(): return actor["name"].split()[1] get_last_name() print("All exceptions caught! Good job!") print("The actor's last name is %s" % get_last_name()) test_output_contains("Cleese") test_output_contains("All exceptions caught! Good job!") test_output_contains("The actor's last name is Cleese") success_msg("Great work!")

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join over a million other learners and get started learning Python for data science today!

Previous Tutorial Next Tutorial Take the Test
Copyright © learnpython.org. Read our Terms of Use and Privacy Policy