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 лекция
Недоступна
Синтаксическая ошибка.
Синтаксическая ошибка.
Комментарии (13)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
max210 Уровень 18
13 апреля 2025
В задаче 1 не указано что нужно обработать исключение. Как можно вообще писать так условие. Даже если уже так написали, то должна же быть какая-то подсказка, что мол обработайте исключение. Первый раз когда меня этот сервис взбесил.
Aram Galandaryan Уровень 20
28 марта 2025
1 задача print('hello') #на этой строке сделал ошибочный отступ raise IndentationError("Это cамая тупая задача!!") Очень неудачно сформулировали задачу!
25 марта 2025
Кто как прошёл 1 и 2 задачи? Уже 20 попыток сделал, всё без толку)
Марат Даньяров Уровень 14
3 апреля 2025
Мои варианты которые прошли: 1: def create_indentation_error(): print("This will raise an IndentationError") try: create_indentation_error() except IndentationError: print("IndentationError") print("This will raise an IndentationError") 2: def example(): eval("if True print('Hello')") # Неправильный синтаксис вызывает SyntaxError example()
SWK Уровень 25
8 апреля 2025
Мы слишком тупые для этого.
17 апреля 2025
не принимается такое решение
Mr.Robot Уровень 21 Expert
13 марта 2025
Ответ ко второй:

x = 1
y = 2
if x < y:
    x+<1
    print("Bye!")
Вообще, это безобразие, конечно...
Mr.Robot Уровень 21 Expert
13 марта 2025
Чтобы больше никто не мучался с первой задачей, пока авторы либо ее не уберут, либо не исправят. Вот это у меня валидатор принял:

m=1
 print(m)
Дмитрий Уровень 19
17 марта 2025
У меня приняло <tab>print )))

    print
Рубен Уровень 21
23 марта 2025
Все равно не срабатывает!))
Николай Уровень 17
25 февраля 2025
1я задача у меня оказалась глючная, прошел её с 14 раза (как только не извращался с отступами)
Mr.Robot Уровень 21 Expert
13 марта 2025
Ну тут авторы превзошли сами себя... Я уже не уверен пройду ли я ее вообще. Даже их собственный пример выше не проходит...
George Zyryanov Уровень 1
29 марта 2025
У меня тоже не проходит никак. Скопировал решение из "Ответ" и оно тоже не работает))