Перехват разных типов исключений в Python

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

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

ZeroDivisionError: division by zero

Чтобы его поймать, имя исключения следует записать в блоке except:

try: print(1 / 0) except ZeroDivisionError: print('error: do not divide by zero')

Также пусть у нас есть список:

lst = [1, 2, 3]

Если задать в блоке try код с другой потенциальной ошибкой, например, с выводом несуществующего элемента, то исключение, не пойманное в блоке except, пройдет дальше и выведется в консоль. Из-за чего остановится работа кода:

lst = [1, 2, 3] try: print(lst[4]) # выведет IndexError: list index out of range except ZeroDivisionError: print('error: do not divide by zero')

Для решения такой ситуации, нужно указать в каждом блоке имя соответствующего типа исключений. Давайте добавим в наш код исключение по недостающему элементу:

try: print(lst[4]) except ZeroDivisionError: print('error: do not divide by zero') except IndexError: print('error: elem is not exist')

Дан следующий код:

txt = '2' res1 = txt + 3 res2 = txt1

Напишите код, чтобы перехватить представленные в переменных res1 и res2 исключения.



Чат с GPT Компилятор