SobesLab логотип SobesLab

В Python существует множество стандартных исключений, которые помогают разработчикам обрабатывать ошибки, возникающие во время выполнения программы. Эти исключения относятся к различным категориям, включая ошибки, связанные с синтаксисом, типами данных, вводом-выводом и другими аспектами.

Основные стандартные исключения

  1. ValueError

    • Возникает, когда функция получает объект правильного типа, но с неправильным значением. Например, если вы пытаетесь преобразовать строку, которая не является числом, в целое число:
      int("abc")  # ValueError: invalid literal for int() with base 10: 'abc'
      
  2. TypeError

    • Происходит, когда операция или функция применяется к объекту неподходящего типа. Например:
      "2" + 2  # TypeError: can only concatenate str (not "int") to str
      
  3. IndexError

    • Появляется, когда вы пытаетесь получить доступ к элементу списка или другого индексируемого объекта по индексу, который находится вне диапазона. Например:
      lst = [1, 2, 3]
      print(lst[3])  # IndexError: list index out of range
      
  4. KeyError

    • Возникает, когда вы пытаетесь получить доступ к элементу в словаре по ключу, который отсутствует в словаре. Например:
      d = {'a': 1, 'b': 2}
      print(d['c'])  # KeyError: 'c'
      
  5. AttributeError

    • Происходит, когда вы пытаетесь получить доступ к атрибуту объекта, который не существует. Например:
      class MyClass:
          pass
      
      obj = MyClass()
      obj.attr  # AttributeError: 'MyClass' object has no attribute 'attr'
      
  6. FileNotFoundError

    • Возникает, когда вы пытаетесь открыть файл, который не существует. Это исключение является подтипом IOError и введено в Python 3:
      open('non_existent_file.txt')  # FileNotFoundError: [Errno 2] No such file or directory: 'non_existent_file.txt'
      
  7. ZeroDivisionError

    • Происходит, когда происходит попытка деления на ноль:
      result = 10 / 0  # ZeroDivisionError: division by zero
      

Практические советы

  • Обработка исключений: Используйте конструкции try и except для обработки исключений. Это позволяет избежать аварийного завершения программы:

    try:
        result = 10 / 0
    except ZeroDivisionError:
        print("Деление на ноль невозможно.")
    
  • Логирование: В случаях, когда исключения возникают часто, полезно логировать их, чтобы упростить отладку:

    import logging
    
    logging.basicConfig(level=logging.ERROR)
    
    try:
        result = 10 / 0
    except ZeroDivisionError as e:
        logging.error("Ошибка: %s", e)
    

Распространённые ошибки

  • Необработка исключений: Часто разработчики забывают обрабатывать потенциальные исключения, что может привести к неожиданным остановкам программы.
  • Слишком общее исключение: Избегайте использования except Exception без указания конкретного типа исключения, так как это может скрыть ошибки, которые вы не ожидаете.
  • Игнорирование исключений: Избегайте простого игнорирования исключений (например, с помощью pass), так как это может затруднить диагностику проблем.

Соблюдая эти советы и обращая внимание на распространенные ошибки, вы сможете более эффективно обрабатывать исключения в Python и создавать более надежные приложения.

Как расширить ответ на собеседовании

Добавьте практический пример

Поделитесь кейсом из проекта, где вы применяли знание из вопроса. Структура: задача → действия → результат.

Укажите альтернативы

Расскажите о вариантах реализации, плюсах и минусах, а также о критериях выбора подхода.

Сделайте вывод

Завершите ответ кратким резюме: где применимо, какие риски и что важно помнить на практике.

Смежные категории

Рекомендуемые категории

Дополнительные материалы