Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Мастерство обработки исключений в Python: эффективное использование try, except, finally и raise

Что такое обработка исключений в Python?

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

Исключение указывает на то, что, хотя событие может произойти, этот тип события случается редко. Когда метод не может обработать исключение, оно передаётся в вызывающую функцию. В конечном счёте, если исключение выбрасывается из главной функции, программа завершается аварийно.

В этом уроке по обработке исключений в Python вы узнаете:

Распространённые примеры исключений:

Зачем использовать исключения?

Вот причины использования исключений в Python:

Правила исключений

Вот основные правила обработки исключений в Python:

Механизм обработки исключений в Python

Обработка исключений управляется следующими 5 ключевыми словами:

  1. try
  2. except (catch)
  3. finally
  4. raise (throw)

Оператор try в Python

Оператор try включает ключевое слово try, за которым следует двоеточие (:) и блок кода, в котором могут возникнуть исключения. У него один или несколько блоков except.

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

Если же исключение возникает в блоке try, блок try завершается, и управление передаётся соответствующему блоку except, следующему за try.

Синтаксис:
try:
    statement(s)

Оператор except (catch)

Блоки except принимают один аргумент за раз — тип исключения, который они могут перехватить. Эти аргументы могут варьироваться от конкретного типа исключения до общего категории исключений.

Правила для блока except:

Пример:

try {
} catch (ArrayIndexOutOfBoundsException e) {
    System.err.printin("Caught first " + e.getMessage());
} catch (IOException e) {
    System.err.printin("Caught second " + e.getMessage());
}

Оператор finally в Python

Блок finally всегда выполняется независимо от того, было ли выброшено исключение или нет. Ключевое слово finally позволяет создать блок кода, следующий за блоком try-catch.

Блок finally опционален. Он предназначен для определения действий очистки, которые должны выполняться во всех условиях.

try:
    raise KeyboardInterrupt
finally:
    print('welcome, world!')
# Output:
# Welcome, world!
# KeyboardInterrupt

Блок finally выполняется перед завершением try.

Оператор raise в Python

Оператор raise указывает аргумент, инициализирующий объект исключения. Здесь после имени исключения следует запятая, и аргумент или кортеж аргументов, следующих за запятой.

Синтаксис:

raise [Exception [, args [, traceback]]]

В этом синтаксисе аргумент опционален, и во время выполнения значение аргумента исключения всегда равно none.

Пример:

Исключение Python может быть любым значением: строкой, классом, числом или объектом. Большинство исключений, вызываемых ядром Python, являются классами с аргументом, являющимся экземпляром класса.

Важные ошибки Python

Тип ошибкиОписание
ArithmeticErrorБазовый класс для всех арифметических исключений. Вызывается при ошибках в арифметических операциях.
ImportErrorВызывается при попытке импорта несуществующего модуля. Возникает при опечатке в имени модуля или если модуль не в стандартном пути.
IndexErrorВызывается при обращении к последовательности за пределами диапазона.
KeyErrorКогда конкретный ключ не найден в словаре, вызывается KeyError.
NameErrorВызывается, когда имя используется в коде, но никогда не существовало в локальном или глобальном пространстве имён.
ValueErrorВызывается, когда функция или встроенная операция получает аргумент правильного типа, но неподходящего значения.
EOFErrorВозникает, когда одна из встроенных функций (input() или raw_input()) достигает EOF без чтения данных.
ZeroDivisionErrorВызывается при делении или взятии остатка от деления на ноль для всех числовых типов.
IOErrorВызывается при неудачной операции ввода/вывода.
SyntaxErrorВызывается при ошибке в синтаксисе Python.
IndentationErrorВызывается при неправильно определённых отступах.

Другие важные исключения Python

ИсключениеОписание
ArithmeticExceptionАрифметическая ошибка, например деление на ноль.
ArrayIndexOutOfBoundsExceptionИндекс массива вне границ.
ArrayStoreExceptionПрисваивание элементу массива несовместимого типа.
ClassCastExceptionНеверное приведение типа.
IllegalMonitorStateExceptionНезаконная операция монитора, например ожидание на разблокированном потоке.
IllegalStateExceptionОкружение или приложение в неправильном состоянии.
ClassNotFoundExceptionКласс не найден.
CloneNotSupportedExceptionПопытка клонировать объект, не реализующий интерфейс Cloneable.
IllegalAccessExceptionДоступ к классу запрещён.
InstantiationExceptionВозникает при попытке создать объект интерфейса или абстрактного класса.
CloneNotSupportedExceptionПопытка клонировать объект, не реализующий интерфейс.

Ошибка против Исключений

ОшибкаИсключения
Все ошибки в Python — непроверяемые (unchecked).Исключения включают как проверяемые, так и непроверяемые типы.
Ошибки происходят во время выполнения, неизвестные компилятору.Исключения можно восстановить, обрабатывая их с помощью блоков try-catch.
Ошибки в основном вызваны средой, в которой работает приложение.Само приложение вызывает исключения.
Примеры:
OutOfMemoryError
Примеры:
Checked Exceptions, SQL exception, NullPointerException и т.д.

Резюме

Python

  1. Освоение типов данных в Python: практическое руководство
  2. Мастерство операторов Python: Полное руководство
  3. Оператор pass в Python: практическое руководство
  4. Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
  5. Словари в Python: создание, манипуляции и продвинутые техники
  6. Обработка исключений в Python: try, except, else и finally подробно
  7. Итераторы в Python: как они работают и как создать свои
  8. Замыкания в Python: как вложенные функции захватывают переменные
  9. Обработка исключений в Java: try, catch, finally, throw и throws
  10. Обработка исключений в Java: try-catch-finally и try-with-resources