Найти в Дзене
SineD

Основные методы обработки ошибок и исключений в Python

Оглавление

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

Try/except

Код в блоке try выполняется, пока не произойдет ошибка. В этом случае перехватывается соответствующий блок except.

try:
# Код, который может вызвать ошибку
except ExceptionType1:
# Обработка первого типа ошибок
except ExceptionType2:
# Обработка второго типа ошибок
except Exception:
# Обработка всех остальных ошибок

Для блока except можно указать конкретные типы исключений, которые нужно перехватить. Например:

try:
divide(a, b)
except ZeroDivisionError:
print("Деление на ноль!")
except TypeError:
print("Некорректные аргументы!")

Некоторые советы по использованию:

  • Указывайте конкретные типы исключений, когда это возможно.
  • Не злоупотребляйте общим блоком except, лучше обрабатывать конкретные ошибки.

Raise

С помощью конструкции raise в Python мы можем генерировать собственные пользовательские исключения.

raise ExceptionType(args)

где:

  • ExceptionType – это любой класс, наследуемый от Exception. Самые распространённые: Exception, ZeroDivisionError, TypeError и т.д.
  • args – необязательные аргументы, передаваемые исключению. Обычно это сообщение об ошибке.
raise ValueError("Неверное значение параметра!")

Assert

Assert – это механизм обработки ошибок в Python, который генерирует исключение AssertionError, если условие assert оказывается ложным.

assert expression, optional_message
  • expression – логическое выражение, которое должно возвращать True.
  • optional_message – необязательное сообщение, которое будет указано в исключении.

Например:

a = 10
assert a % 2 == 0, "a должно быть четным!"

Если выражение a % 2 == 0 выполняется успешно (a действительно четное), то ничего не произойдет.

Но если выполнится assert a % 3 == 0, то возникнет исключение AssertionError с сообщением:

AssertionError: a должно быть четным!

Плюсы assert:

  • Создаёт явные точки проверки в программе.
  • Удобное сообщение об ошибке.

В целом, assert – удобный способ проверки предусловий и последовательности действий, что делает код чище. Но не злоупотребляйте assert, не превращайте их в место для обычной логики.