Винятки

Список найпопулярніших винятків

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

Перехоплення виключень

Конструкція try-except

try:
    result = 10 / 0
except ZeroDivisionError:
    print("Помилка: ділення на нуль.")

Обробка кількох виключень

try:
    result = int("abc")
except ZeroDivisionError:
    print("Помилка: ділення на нуль.")
except ValueError:
    print("Помилка: некоректне значення.")

Один блок except з кортежем виключень

try:
    # Код, який може викликати виключення
    result = int("abc")
except (ValueError, ZeroDivisionError) as e:
    print(f"Сталася помилка: {e}")

Перехоплення всіх виключень

try:
    result = 10 / 0
except:
    print("Виникла помилка.")

Конструкція try-except-else

try:
    result = 10 / 2
except ZeroDivisionError:
    print("Помилка: ділення на нуль.")
else:
    print(f"Результат: {result}")

Конструкція try-except-finally

try:
    result = 10 / 0
except ZeroDivisionError:
    print("Помилка: ділення на нуль.")
finally:
    print("Цей блок виконується завжди.")

Що містить в собі помилка

  • args: Кортеж, що містить аргументи, передані при створенні виключення. Зазвичай це повідомлення про помилку.
  • message: Рядок, що містить повідомлення про помилку (в деяких виключеннях).
  • __str__: Метод, що повертає рядкове представлення виключення. Цей метод використовується для отримання текстового представлення помилки, яке буде повернуто при використанні функції print() на об'єкті виключення.

Намірений запуск виключень

def check_number(value):
    if value < 0:
        raise Exception("Вибач, числа менше нуля не дозволені")

try:
    check_number(-5)
except Exception as e:
    print(f"Виключення спіймане: {e}")

Переупакування виключення

class EmptyVariableError(Exception):
    pass

def check_non_empty(value):
    if value == "":
        raise ValueError("Змінна порожня")

try:
    check_non_empty("")
except ValueError as e:
    raise EmptyVariableError("Порожня змінна виявлена") from e

 

2015-2026 © SumyNikNet