Назовите несколько стандартных исключений в Python.
В Python существует множество стандартных исключений, которые помогают разработчикам обрабатывать ошибки, возникающие во время выполнения программы. Эти исключения относятся к различным категориям, включая ошибки, связанные с синтаксисом, типами данных, вводом-выводом и другими аспектами.
Основные стандартные исключения
-
ValueError
- Возникает, когда функция получает объект правильного типа, но с неправильным значением. Например, если вы пытаетесь преобразовать строку, которая не является числом, в целое число:
int("abc") # ValueError: invalid literal for int() with base 10: 'abc'
- Возникает, когда функция получает объект правильного типа, но с неправильным значением. Например, если вы пытаетесь преобразовать строку, которая не является числом, в целое число:
-
TypeError
- Происходит, когда операция или функция применяется к объекту неподходящего типа. Например:
"2" + 2 # TypeError: can only concatenate str (not "int") to str
- Происходит, когда операция или функция применяется к объекту неподходящего типа. Например:
-
IndexError
- Появляется, когда вы пытаетесь получить доступ к элементу списка или другого индексируемого объекта по индексу, который находится вне диапазона. Например:
lst = [1, 2, 3] print(lst[3]) # IndexError: list index out of range
- Появляется, когда вы пытаетесь получить доступ к элементу списка или другого индексируемого объекта по индексу, который находится вне диапазона. Например:
-
KeyError
- Возникает, когда вы пытаетесь получить доступ к элементу в словаре по ключу, который отсутствует в словаре. Например:
d = {'a': 1, 'b': 2} print(d['c']) # KeyError: 'c'
- Возникает, когда вы пытаетесь получить доступ к элементу в словаре по ключу, который отсутствует в словаре. Например:
-
AttributeError
- Происходит, когда вы пытаетесь получить доступ к атрибуту объекта, который не существует. Например:
class MyClass: pass obj = MyClass() obj.attr # AttributeError: 'MyClass' object has no attribute 'attr'
- Происходит, когда вы пытаетесь получить доступ к атрибуту объекта, который не существует. Например:
-
FileNotFoundError
- Возникает, когда вы пытаетесь открыть файл, который не существует. Это исключение является подтипом IOError и введено в Python 3:
open('non_existent_file.txt') # FileNotFoundError: [Errno 2] No such file or directory: 'non_existent_file.txt'
- Возникает, когда вы пытаетесь открыть файл, который не существует. Это исключение является подтипом IOError и введено в Python 3:
-
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 и создавать более надежные приложения.