JavaRush/Курсы/Модуль 1: Python Core/Популярные исключения

Популярные исключения

Открыта

2.1 Создание исключений

Не можешь победить — возглавь. Если мы не можем избежать возникновения ошибок в программе, мы должны научиться их контролировать. А для этого давайте научимся сознательно создавать исключения.

Самый простой пример исключения — это деление на ноль. Ну и программа тоже простая:

x = 100 / 0

Такой код выполнится с ошибкой:

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

ZeroDivisionError — это название исключения, а division by zero — его краткое описание. Также Python сообщит номер строки, где это исключение возникло.

Несоответствие типов данных

Разумеется, возможны и другие исключения. Например, при попытке сложить строку и число:

s = "100" + 100

Произойдет исключение TypeError:

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

Выход за границы списка

Еще одна очень распространенная ошибка, генерирующая исключение — это попытка обратиться к элементу, которого нет в списке:

my_list = [1, 2, 3]
print(my_list[10])

Произойдет исключение IndexError:

Traceback (most recent call last):
    print(my_list[10])
        ~~~~~~~^^^^
IndexError: list index out of range

Сколько же их всего? Есть тысячи разных типов исключений. Более того, вы можете создать свои, если вам не хватит существующих для описания какой-нибудь специфической ситуации. Хотя самых популярных не так уж и много.

2.2 Список самых популярных исключений

Исключений много, но вам, как новичку, будет полезно узнать о самых популярных. Ниже я приведу таблицу с ними:

Исключение Описание
Exception Базовый класс для всех исключений.
IndexError Возникает при обращении к несуществующему индексу в последовательности (например, список или кортеж).
KeyError Возникает при обращении к несуществующему ключу в словаре.
NameError Возникает при обращении к несуществующей переменной.
RuntimeError Возникает при общей ошибке времени выполнения, не относящейся к другим типам исключений.
StopIteration Возникает для сигнализации об окончании итерации.
SyntaxError Возникает при синтаксической ошибке в коде.
IndentationError Возникает при ошибке отступов в коде (подтип SyntaxError).
TabError Возникает при смешивании табуляций и пробелов для отступов (подтип IndentationError).
TypeError Возникает при попытке выполнения операции с несовместимыми типами данных.
UnboundLocalError Возникает при обращении к локальной переменной до её объявления (подтип NameError).
ValueError Возникает при передаче функции или операции аргумента с неправильным значением.
ZeroDivisionError Возникает при делении на ноль.

Скорее всего, вы, как новичок, в первый месяц своей учебы столкнетесь со всеми этими ошибками. И в этом нет ничего плохого — учатся только на ошибках.

2.3 Ошибки в коде

Давайте разберем еще несколько ситуаций, когда в коде возникают ошибки, чтобы вы легче потом их находили в своем коде:

IndentationError

Этот тип ошибки возникает, когда отступы в коде сделаны неправильно. Например, смешивание табуляций и пробелов или неправильное количество отступов.

def example():
    print("Hello")
     print("World")  # Неправильный отступ вызывает IndentationError

example()

NameError

def example():
    print(undeclared_variable)  # Попытка использовать необъявленную переменную вызывает NameError

example()

ValueError

Этот тип ошибки возникает, когда операция или функция получает аргумент правильного типа, но с неподходящим значением.

def example():
    int("abc")  # Попытка преобразовать строку, не являющуюся числом, вызывает ValueError

example()

KeyError

Этот тип ошибки возникает, когда программа пытается получить доступ к несуществующему ключу в словаре.

def example():
    my_dict = {"a": 1, "b": 2}
    print(my_dict["c"])  # Попытка доступа к несуществующему ключу вызывает KeyError

example()

SyntaxError

Этот тип ошибки возникает, когда в коде есть синтаксическая ошибка, то есть код не соответствует грамматике языка Python.

def example():
    eval("if True print('Hello')")  # Неправильный синтаксис вызывает SyntaxError

example()

Кто предупрежден, тот вооружён. Теперь вы можете распознавать и создавать ситуации, которые вызывают ошибки. Настало время научиться обрабатывать эти ошибки.

2
Задача
Модуль 1: Python Core,  10 уровень1 лекция
Недоступна
Ошибка с отступами.
Ошибка с отступами.
2
Задача
Модуль 1: Python Core,  10 уровень1 лекция
Недоступна
Синтаксическая ошибка.
Синтаксическая ошибка.
Комментарии (28)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
DmitriyBackend Developer в Microsoft
12 февраля, 11:48
Для SyntaxError валидатор подсказал:
exec('1 +')
или где-то не закрывать скобку Про разность условий в первой задаче вообще молчу
Иван
Уровень 26
15 января, 14:19
Что не так?
Victoria Software Developer
21 января, 17:33
Отступы в Python нужны ТОЛЬКО внутри блоков кода. Здесь блока нет поэтому отступы не нужны
Кирилл
Уровень 35
15 ноября 2025, 17:29
Качество курса в плане практических заданий - полное дно. По крайней мере, на данном этапе. Мало того, что задания из одной строки, где не нужно думать вообще, так еще и валидация, условия не корректные.
Georgy Dobaev
Уровень 20
6 октября 2025, 19:54
21 сентября 2025, 08:28
2 задача в моем рейтинге получает - худшая задача курса!
Анастасия
Уровень 27
22 ноября 2025, 19:49
Не только у Вас, похоже у Всех
Vanil'ka Backend Developer
12 августа 2025, 14:00
Ну за что мне всё это? Похоже я купил себе страдания за 7000 рублей XD
Vanil'ka Backend Developer
12 августа 2025, 14:03
Решение второй задачи:
exec('''def developers_of_this_course_are_idiots():
   elif:
       print("Ping!")

   developers_of_this_course_are_idiots()''')
Спасибо комментатору снизу.
Aleksei Zharkov
Уровень 57
14 июня 2025, 16:48
Напиши программу, которая создает исключение IndentationError Требования: Программа должна содержать код, вызывающий NameError. Опечатка? Сначала про IndentationError, а ниже NameError.?
Davich
Уровень 44
10 июня 2025, 17:24
?
shinobi
Уровень 20
10 августа 2025, 21:39
Такая же ситуация)
Илья
Уровень 90
13 мая 2025, 17:30
для 2 задачи
eval() или exec() — они выполняют строку как код во время выполнения, и тогда SyntaxError можно поймать
ИванРаботает в РосАтом
5 мая 2025, 19:42
def correct_indent(): print("Теперь отступ есть!") # Теперь всё правильно def no_name_error(): defined_variable print(defined_variable) # Переменная определена correct_indent() # Работает no_name_error() # Работает # C 11 попытки)) может кому поможет.