Keywords: easytut

Далее: Заключение Наверх: Курс языка Python для начинающих Назад: Работа с файлами Содержание
В этой главе

- Упражнения

# Что делать с вещами, далекими от идеала (обработка ошибок)

Предположим, у вас есть идеальная программа, которая работает безотказно, за исключением одной мелочи: она ломается при неправильном пользовательском вводе. Не бойтесь, для этого случая в Python существует специальная структура управления. Она называется `try` и обычно что-то делает в ситуациях, подобных описанной. Пример проблемы в программе:

    print "Type Control C or -1 to exit"
    number = 1
    while number != -1:
        number = int(raw_input("Enter a number: "))
        print "You entered: ",number

Заметьте, если вы введете `@#&`, она выдаст нечто вроде:

    Traceback (innermost last):
      File "try_less.py", line 4, in ?
        number = int(raw_input("Enter a number: "))
    ValueError: invalid literal for int(): @#&

Как видите, функции `int` не понравилось число `@#&` (и совершенно справедливо). Последняя строка показывает, в чем проблема: Python обнаружил `ValueError` (ошибка значения). Что можно с этим сделать? Делаем следующее: первое, помещаем место, где происходит ошибка, в блок `try`; второе, указываем, как обработать ошибку `ValueError`. Следующая программа делает это.

    print "Type Control C or -1 to exit"
    number = 1
    while number != -1:
        try:
            number = int(raw_input("Enter a number: "))
            print "You entered: ",number
        except ValueError:
            print "That was not a number."

Если мы сейчас запустим программу и введем `@#&`, она выдаст: “That was not a number.” и продолжит свою работу.

Если в вашей программе постоянно появляется ошибка, и вы знаете, как ее обработать, поместите проблемное место в блок `try` и поместите обработку ошибки в блок `except`.

# Упражнения

Улучшите программу телефонных номеров, чтобы она была в состоянии продолжить работу, если пользователь не ввел никаких данных в пользовательском меню (на запрос был просто нажат Enter).

Далее: Заключение Наверх: Курс языка Python для начинающих Назад: Работа с файлами Содержание