Автор оригинала: 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)
Выход будет точно такой же, как раньше. Мы можем использовать этот подход, когда код в кроме блока, одинаково для того, чтобы несколько исключений.