📝 Python

Try/Except: обработка ошибок

P
Автор
PyLand Team
📅
Опубликовано
03.04.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
370
🌿
Уровень
Средний

Цель: Научиться обрабатывать ошибки и делать программы надёжными.

Почему программы падают?

number = 10 / 0  # ZeroDivisionError: division by zero

Решение: try/except — перехватить ошибку и обработать её.

Базовый синтаксис

try:
    result = 10 / 0
except ZeroDivisionError:
    print("Нельзя делить на ноль!")

Ловить голый except: (без типа) — плохая практика: скрывает реальные проблемы.

Популярные типы ошибок

# ValueError — неверное значение
try:
    age = int("двадцать")
except ValueError:
    print("Введите число цифрами!")

# FileNotFoundError — файл не найден
try:
    with open("missing.txt") as f:
        data = f.read()
except FileNotFoundError:
    print("Файл не найден!")

# KeyError — ключ не найден в словаре
try:
    age = user["age"]
except KeyError:
    print("Ключ 'age' отсутствует!")

# TypeError — несовместимые типы
try:
    result = "5" + 10
except TypeError:
    print("Несовместимые типы!")

# IndexError — индекс вне диапазона
try:
    print([1, 2, 3][10])
except IndexError:
    print("Индекс вне диапазона!")

Несколько except + получение деталей

try:
    age = int(input("Возраст: "))
    result = 100 / age
except ValueError:
    print("Введите число!")
except ZeroDivisionError:
    print("Возраст не может быть нулём!")
except Exception as e:          # поймает всё остальное
    print(f"Неожиданная ошибка: {e}")

finally и else

try:
    data = json.loads(json_string)
except json.JSONDecodeError as e:
    print(f"Невалидный JSON: {e}")
else:
    process(data)               # выполнится только при успехе
finally:
    print("Выполнится всегда")  # очистка ресурсов

Когда НЕ нужен try/except

# ❌ Плохо — скрывать баги
try:
    hacky_code()
except:
    pass

# ❌ Плохо — заменять проверки
try:
    if user["age"] > 18: ...
except KeyError:
    ...

# ✅ Хорошо — проверять заранее
if "age" in user and user["age"] > 18: ...

Когда нужен try/except

# Ввод пользователя
def get_int(prompt):
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            print("Введите целое число.")

# Файлы
try:
    with open("config.json") as f:
        config = json.load(f)
except FileNotFoundError:
    config = {}

# Сеть / API
try:
    response = requests.get(url, timeout=5)
except (ConnectionError, TimeoutError):
    print("Сервер недоступен")

Лучшие практики

✅ Делай ❌ Не делай
Ловить конкретные исключения Голый except: без типа
Узкий try (только опасный код) Весь код в одном try
Давать понятные сообщения except: pass
finally для очистки ресурсов try/except вместо проверок

Золотое правило: Используй try/except там, где не можешь предсказать результат — ввод пользователя, файлы, сеть.

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

if __name__ == "__main__": точка входа Python

Конструкция if name == "main" определяет точку входа Python-программы: она помогает отличить прямой запуск файла...

📅 14.08.2026 👁️ 44
📝

strip() и lower(): подготавливаем пользовательски…

Пользователь может ввести правильное слово с лишними пробелами или буквами другого регистра. Для Python строки...

📅 11.08.2026 👁️ 50
📝

ord(), chr() и циклический сдвиг букв в Python 🔐

Строка состоит из символов, но компьютер хранит каждый символ как числовой код. Python позволяет переходить...

📅 09.08.2026 👁️ 89