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

Обработка на изключения


Когато програмирате, грешките се случват. Това е просто факт от живота. Може би потребителят е дал неправилни данни. Може би ресурс от мрежата не е бил достъпен. Може би програмата е изчерпала паметта. Или дори самият програмист може да е направил грешка!

Решението в Python за грешки са изключенията. Възможно е да сте виждали изключение преди.

print(a)

#грешка
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

О, забравили сте да присвоите стойност на променливата 'a'.

Но понякога не искате изключенията да спират програмата изцяло. Можете да искате да направите нещо специално, когато възникне изключение. Това се прави в блок try/except.

Ето един тривиален пример: Да предположим, че обхождате списък. Трябва да обхождате 20 числа, но списъкът е създаден от потребителски вход и може да няма 20 числа в него. След като достигнете края на списъка, просто искате останалите числа да бъдат интерпретирани като 0. Ето как бихте могли да го направите:

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: # Вдига се, когато се достъпва несъществуващ индекс на списък
            do_stuff_with_number(0)

catch_this()

Ето, това не беше много трудно! Можете да го направите с което и да е изключение. За повече подробности относно обработката на изключения, вижте Python Docs

Упражнение

Обработете всички изключения! Спомнете си предишните уроци, за да върнете фамилията на актьора.

# 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