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()
        

Хто попереджений, той озброєний. Тепер ви можете розпізнавати і створювати ситуації, які викликають помилки. Настав час навчитися обробляти ці помилки.

Коментарі (9)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
31 серпня 2025
не пройшло: 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
negoda Рівень 31
13 серпня 2025

eval("x === 5")
Вторая задача
negoda Рівень 31
13 серпня 2025

user_input = "__import__('os').system('del C:\\Windows')"
eval(user_input)
vova_yu Рівень 64
9 травня 2025
SyntaxError проходить тільки приклад з лекції, всі інші варіанти валідацію не проходять.
Дмитро Рівень 31
24 квітня 2025
Щоб пройти завдання помилка має бути саме в 8-му рядку
Дмитро Рівень 31
24 квітня 2025
Помилку досі не виправили Я з десяток різних комбінацій перепробував Викликав інші помилки IndentationError але не з принтами Виправте баг А то чим далі іде курс тим більше здається що його зі спущеними руквами на колінці робили
Віталій Рівень 23
8 квітня 2025
Задачя - Помилка з відступами. Не проходить виконання "Перевірка" , навіть варіант підстановки відповіді з "Розв'язання"
Дмитро Рівень 21
7 квітня 2025
print(1) print(2) не проходить :) не проходить нічого, можливо просто помилка серверу
Vitalii Mykytenko Рівень 22
5 квітня 2025
Доброго всім дня... Завдання «Помилка з відступами» не проходить перевірку, якщо у рядку 8 перед print взагалі нема ніяких відступів, але видає помилку «IndentationError» при запуску програми в терміналі і, навпаки, - якщо у рядку 8 перед print є хоч один пробіл програма проходить перевірку, але в терміналі - жодної...