Автор оригинала: Pankaj Kumar.
Python всегда работает на модели на основе исключения. То есть любые ошибки во время выполнения программы передаются как исключения и возвращаются в программист, который может соответственно обрабатываться с использованием методов обработки исключений.
Иногда возможно, что процесс повышает более одного возможного исключения, в зависимости от потока контроля. Таким образом, нам может потребоваться поймать Несколько исключений Для этой программы/функции.
Давайте понять, как мы можем справиться с несколькими исключениями в Python.
Поймать несколько исключений
Python позволяет нам обрабатывать несколько исключений в 2 способах:
Используя несколько кроме блоков
Мы можем поймать несколько исключений, последовательно записывая кроме
Блоки для всех этих исключений.
Псевдокод выглядит так:
try: pass except Exception1: pass except Exception2: pass
Давайте понять этот способ обращения с примером.
Рассмотрим функцию ниже, которая пытается добавить все элементы списка, используя +
Оператор, а также проверяет, является ли какой-либо целочисленный элемент менее 200. Поскольку добавление/Consatenation также могут потерпеть неудачу, если типы могут быть разными, возможны несколько исключений.
input_list_1 = ['Hello', ' from', 123, 456, ' AskPython'] input_list_2 = [123, 456, ' AskPython'] def add_list(ip): # Adds all items of a list # Will raise ValueError if any integer item > 200 # and will raise TypeError if addition operands are of different types if isinstance(ip, list): result = '' if isinstance(ip[0], str) else 0 for item in ip: if isinstance(item, int) and item > 200: raise ValueError('Integer Item has to be <= 200') result = result + item return result else: return None try: # Will raise TypeError res = add_list(input_list_1) print(res) except TypeError as te: print(type(te), te) except ValueError as ve: print(type(ve), ve) try: # Will raise ValueError since 456 > 200 res = add_list(input_list_2) print(res) except TypeError as te: print(type(te), te) except ValueError as ve: print(type(ve), ve)
Функция выполняется в двух списках, чтобы показать, что несколько исключений могут быть подняты из одной функции.
Выход
can only concatenate str (not "int") to str Integer Item has to be <= 200
Используя один, кроме блока
Мы также можем поймать несколько исключений в одном кроме
Блок, если вы хотите то же поведение для всех этих исключений.
Это может избежать ненужного дублирования кода и может сохранить время программатора, если вывод одинаков для нескольких исключений.
Псевдокод для того же:
try: pass except (Exception1, Exception2) as e: pass
Давайте изменим Главная
Блок с использованием одного кроме
Блок для нескольких исключений.
try: res = add_list(input_list_1) print(res) except (TypeError, ValueError) as err: print(type(err), err) try: res = add_list(input_list_2) print(res) except (TypeError, ValueError) as err: print(type(err), err)
Вывод останется прежними:
can only concatenate str (not "int") to str Integer Item has to be <= 200
Примечание : Несколько исключения могут быть любая комбинация встроенных исключений и Пользовательские исключения Отказ
Заключение
В этой статье мы узнали два способа обработки нескольких исключений в Python, используя несколько последовательных кроме
блоки, а также используя один кроме
Блок, чтобы уменьшить дублирование кода.