Рубрики
Без рубрики

Python поймает несколько исключений

Python уловит несколько исключений, обрабатывающую исключение на Python с несколькими исключениями, уловить несколько исключений в Python в одном операторе, кроме оператора.

Автор оригинала: Pankaj Kumar.

Мы можем использовать блок TRY-BLOCK, чтобы получить исключения и обрабатывать их. Иногда мы называем функцию, которая может бросать несколько типов исключений в зависимости от аргументов, логики обработки и т. Д. В этом руководстве мы узнаем, как поймать несколько исключений в Python.

Python поймает несколько исключений

Скажем, у нас есть функция, определенная следующим образом:

import math


def square(x):
    if int(x) is 0:
        raise ValueError('Input argument cannot be zero')
    if int(x) < 0:
        raise TypeError('Input argument must be positive integer')
    return math.pow(int(x), 2)

Мы можем поймать оба ValueError и Типеррор в разных кроме блока.

while True:

    try:
        y = square(input('Please enter a number\n'))
        print(y)
    except ValueError as ve:
        print(type(ve), '::', ve)
    except TypeError as te:
        print(type(te), '::', te)

Я поставил пробовать заблокировать в то время как True Loop, чтобы я мог запустить сценарий ловить несколько исключений.

Выход:

Please enter a number
10
100.0
Please enter a number
-5
 :: Input argument must be positive integer
Please enter a number
0
 :: Input argument cannot be zero
Please enter a number
^D
Traceback (most recent call last):
  File "/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_catch_multiple_exceptions.py", line 15, in 
    y = square(input('Please enter a number\n'))
EOFError: EOF when reading a line

Process finished with exit code 1

Поймать несколько исключений в одном за исключением блока

Если вы заметите, кроме кода блока, это то же самое для обеих типов исключений. Если это так, мы можем удалить избыточность кода, передавая кортеж типов исключения в кроме блока.

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

while True:

    try:
        y = square(input('Please enter a number\n'))
        print(y)
    except (ValueError, TypeError) as e:
        print(type(e), '::', e)

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