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

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

Модуль 1: Python Core
10 уровень , 1 лекция
Открыта

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 лекция
Недоступна
Синтаксическая ошибка.
Синтаксическая ошибка.
Комментарии (30)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Dmitriy Уровень 24
12 февраля 2026
Для SyntaxError валидатор подсказал:

exec('1 +') 
или где-то не закрывать скобку Про разность условий в первой задаче вообще молчу
Pan Game Уровень 64
16 мая 2026
Спасибо. А то лишнюю скобку или пропущенное двоеточие... валидатор проваливал задание.
Иван Уровень 43
15 января 2026
Что не так?
Victoria Уровень 25
21 января 2026
Отступы в Python нужны ТОЛЬКО внутри блоков кода. Здесь блока нет поэтому отступы не нужны
Кирилл Уровень 46
15 ноября 2025
Качество курса в плане практических заданий - полное дно. По крайней мере, на данном этапе. Мало того, что задания из одной строки, где не нужно думать вообще, так еще и валидация, условия не корректные.
Georgy Dobaev Уровень 20
6 октября 2025
21 сентября 2025
2 задача в моем рейтинге получает - худшая задача курса!
Анастасия Уровень 46
22 ноября 2025
Не только у Вас, похоже у Всех
27 мая 2026
почему "худшая"? ;) "по-моему" ';)она лучшая
Vanil'ka Уровень 25
12 августа 2025
Ну за что мне всё это? Похоже я купил себе страдания за 7000 рублей XD
Vanil'ka Уровень 25
12 августа 2025
Решение второй задачи:

 exec('''def developers_of_this_course_are_idiots():
    elif:
        print("Ping!")
        
    developers_of_this_course_are_idiots()''')
Спасибо комментатору снизу.
Aleksei Zharkov Уровень 76
14 июня 2025
Напиши программу, которая создает исключение IndentationError Требования: Программа должна содержать код, вызывающий NameError. Опечатка? Сначала про IndentationError, а ниже NameError.?
Davich Уровень 44
10 июня 2025
?
shinobi Уровень 20
10 августа 2025
Такая же ситуация)
Илья Уровень 90
13 мая 2025
для 2 задачи

eval() или exec() — они выполняют строку как код во время выполнения, и тогда SyntaxError можно поймать
Иван Уровень 22
5 мая 2025
def correct_indent(): print("Теперь отступ есть!") # Теперь всё правильно def no_name_error(): defined_variable print(defined_variable) # Переменная определена correct_indent() # Работает no_name_error() # Работает # C 11 попытки)) может кому поможет.