Python
  • Полезные ссылки
  • Базовый Python
    • Простые
      • Циклы. Варианты циклов, назначение.
      • Что такое список, примеры, назначение.
      • Что такое словарь, примеры, назначение.
      • Что такое срез, примеры, назначение.
      • Что такое функция. Для чего нужны функции. Параметры функций.
      • Что такое класс. Для чего нужны классы.
      • В чем разница между функцией и классом (рассматривая одну функцию).
      • Как объединить несколько строк.
      • Рекурсия.
      • Что такое json. Для чего используют json.
    • Сложные
      • Генераторы, примеры, назначение.
      • Итераторы. Зачем нужны
      • Что такое кортеж, примеры, назначение
      • Что такое set, примеры, назначение
      • Наследование, примеры, назначение
      • Полиморфизм, примеры, назначение
      • Преимущества итераторов перед генераторами
      • Способы создания итераторов
      • Изменяемые и неизменяемые типы
      • Что такое исключения, примеры, назначение
  • Алгоритмы и структуры данных
    • Общее понятие массива. Представление массива. Примеры.
    • Понятие очереди, принципы работы, примеры использование, временные сложности операций.
    • Понятие стека, принципы работы, примеры использование, временные сложности операций
    • Как осуществляется операция доступа к элементу массива. Временная сложность операции
    • Понятие временной сложности алгоритмов. Назначение, примеры, графическое представление
    • Линейный поиск в массиве. Временная сложность
    • Поиск минимального элемента в массиве. Временная сложность
    • Линейный поиск в двумерном массиве. Временная сложность
    • Алгоритм бинарного поиска. Временная сложность
    • Поиск подстроки. Линейный алгоритм. Временная сложность
  • Практика
    • Простые
    • Сложнее
Powered by GitBook
On this page

Was this helpful?

  1. Базовый Python
  2. Сложные

Что такое исключения, примеры, назначение

Исключения (exceptions) - ещё один тип данных в python. Исключения необходимы для того, чтобы сообщать программисту об ошибках.

Самый простейший пример исключения - деление на ноль:

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

В данном случае интерпретатор сообщил нам об исключении ZeroDivisionError, то есть делении на ноль. Также возможны и другие исключения:

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

>>> int('qwerty')
Traceback (most recent call last):
  File "", line 1, in
    int('qwerty')
ValueError: invalid literal for int() with base 10: 'qwerty'

В этих двух примерах генерируются исключения TypeError и ValueError соответственно. Подсказки дают нам полную информацию о том, где порождено исключение, и с чем оно связано.

Теперь, зная, когда и при каких обстоятельствах могут возникнуть исключения, мы можем их обрабатывать. Для обработки исключений используется конструкция try - except.

Первый пример применения этой конструкции:

>>> try:
...     k = 1 / 0
... except ZeroDivisionError:
...     k = 0
...
>>> print(k)
0

В блоке try мы выполняем инструкцию, которая может породить исключение, а в блоке except мы перехватываем их. При этом перехватываются как само исключение, так и его потомки. Например, перехватывая ArithmeticError, мы также перехватываем FloatingPointError, OverflowError и ZeroDivisionError.

>>> try:
...     k = 1 / 0
... except ArithmeticError:
...     k = 0
...
>>> print(k)
0

Также возможна инструкция except без аргументов, которая перехватывает вообще всё (и прерывание с клавиатуры, и системный выход и т. д.). Поэтому в такой форме инструкция except практически не используется, а используется except Exception. Однако чаще всего перехватывают исключения по одному, для упрощения отладки (вдруг вы ещё другую ошибку сделаете, а except её перехватит).

Ещё две инструкции, относящиеся к нашей проблеме, это finally и else. Finally выполняет блок инструкций в любом случае, было ли исключение, или нет (применима, когда нужно непременно что-то сделать, к примеру, закрыть файл). Инструкция else выполняется в том случае, если исключения не было.

>>> f = open('1.txt')
>>> ints = []
>>> try:
...     for line in f:
...         ints.append(int(line))
... except ValueError:
...     print('Это не число. Выходим.')
... except Exception:
...     print('Это что ещё такое?')
... else:
...     print('Всё хорошо.')
... finally:
...     f.close()
...     print('Я закрыл файл.')
...     # Именно в таком порядке: try, группа except, затем else, и только потом finally.
...
Это не число. Выходим.
Я закрыл файл.
PreviousИзменяемые и неизменяемые типыNextАлгоритмы и структуры данных

Last updated 6 years ago

Was this helpful?