Изучаем Python. №14. Исключения.


Исключения или exceptions — это, по-сути, является еще одним типом данных в питоне и предназначены для сообщения об ошибках.

ТИПИ ОШИБОК

  • Синтаксические ошибки
  • Исключения

СИНТАКСИЧЕСКИЕ ОШИБКИ

>>> while 1 print "hello"
  File "", line 1
    while 1 print "hello"
                ^
SyntaxError: invalid syntax

В момент появления синтаксической ошибки программа завершает свое выполнение.

ИСКЛЮЧЕНИЯ В PYTHON
Ошибки обнаруженные во время выполнения программы
Пример, при делении на 0:

>>> 10*100/0
Traceback (most recent call last):
  File "", line 1, in 
ZeroDivisionError: division by zero

ОБРАБОТКА ИСКЛЮЧЕНИЙ

Код:
while True:
    try:
        a = int(raw_input('Введите целое число'))
    except ValueError:
        print "Вы ошиблись"

Результат:
Введите целое число 12
Введите целое число 2.4
Вы ошиблись
Введите целое число eee
Вы ошиблись

Из примера видим, что весь код, который может сообщить о исключении, заключается в блок try:, а дальше в except: блоке через зяпятую перечисляются типы ошибок, которые реально могут появится.
Далее следует код, который выполняется в случае возникновения исключения в try: блоке, в нашем случае — это вывод на экран сообщения об ошибке.
Более подробнее ознакомится со списком исключений можно тут.

В except можно указать несколько типов исключений подряд:

 except(RunTimeError,TypeError,NameError):
     pass

Они же, но по отдельности:
 except RunTimeError:
     pass
     
 except TypeError:
     pass

СООБЩЕНИЕ ОБ ОТСУТСТВИИ ИСКЛЮЧЕНИЯ
Если во время выполнения программы не произошло исключений, то выполняется блок else:

Пример программы:
a = 100
try:
    b = int(raw_input('b = '))
    c = a/b
except ZeroDivisionError:
    print "Нельзя вводить 0"
except ValueError:
    print "Нельзя буквы"
else:
    print "100/"+str(b)+"="+str(c)
    print "Все OK. Ошибок не обнаруженно!"

Выполнение:
b = 5
100/5=20
Все OK. Ошибок не обнаруженно!

b = 0
Нельзя вводить 0

b = ч
Нельзя буквы

    

3 thoughts on “Изучаем Python. №14. Исключения.

  1. Админу привет! 🙂
    Извиняюсь за вопрос по уроку № 9, но пожалуйста, подскажите:
    Вы написали
    >>> args = [3,6]
    >>> range(*args)
    [3, 4, 5]
    !аналогично для оператора **
    — А как это «аналогично»? Не выходит никак, пробовал словари подкидывать для **args — ошибки выходят.
    Покажите, плз, как это делается.

    1. Это я взял с тех уроков, по которым учился сам. Возможно автор моих уроков ошибся. Честно говоря, даже не проверял этот оператор.

  2. Понято..
    В свою функцию типа такого всё проходит ))
    def BlaBlaBla(**args):
    return args

    x = {‘one’:1, ‘two’:2}
    BlaBlaBla(**x)
    {‘two’: 2, ‘one’: 1}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *