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 лекція
Недоступна
Синтаксична помилка.
Синтаксична помилка.
Коментарі (16)
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Андрій
Рівень 40
23 лютого, 11:29
Яким чином?
Андрій
Рівень 40
23 лютого, 11:29
Це як?
Yurii
Рівень 37
28 січня, 22:00
Ну... Тобто серйозно?)
Alex Stasyuk
Рівень 25
18 грудня 2025, 12:05
Задача 2 не проходить перевірку: Напиши програму, яка створює виключення SyntaxError Вимоги: Програма повинна містити код, що викликає SyntaxError. Traceback (most recent call last): File "/ua/javarush/python/core/level10/task04/task04.py", line 7, in <module> eval ("elif 1===2") File "<string>", line 1 elif 1===2 ^^^^ SyntaxError: invalid syntax
Alex Stasyuk
Рівень 25
18 грудня 2025, 12:02
Напиши програму, яка створює виключення IndentationError. Вимоги: Програма повинна містити код, який викликає NameError. Вимоги не відповідають умові задачі №1
Костянтин Моісеєнко Працює в планую свічнутись
31 серпня 2025, 11:26
не пройшло: def func() print("hello") File "/ua/javarush/python/core/level10/task04/task04.py", line 7 def func() ^ SyntaxError: expected ':' а це проходить def func(): eval('if True len("hello")') func() скоріш за все необхідно щоб в поясненні до помилки SyntaxError було invalid syntax
Alex Stasyuk
Рівень 25
18 грудня 2025, 12:06
File "/ua/javarush/python/core/level10/task04/task04.py", line 7 if 1 === 2: ^ SyntaxError: invalid syntax не проходить
negoda @poviranacze - Telegram в Python Intern (Train
13 серпня 2025, 09:23
eval("x === 5")
Вторая задача
negoda @poviranacze - Telegram в Python Intern (Train
13 серпня 2025, 09:19
user_input = "__import__('os').system('del C:\\Windows')"
eval(user_input)
vova_yu
Рівень 64
9 травня 2025, 17:22
SyntaxError проходить тільки приклад з лекції, всі інші варіанти валідацію не проходять.
Alex Stasyuk
Рівень 25
18 грудня 2025, 12:08
Правда.Питання до розробників курсу - що за фігня? Ми вчимося копіпасті? 😤
Дмитро
Рівень 31
24 квітня 2025, 06:43
Щоб пройти завдання помилка має бути саме в 8-му рядку