Исключения: продолжение
Посмотрите на код в редакторе. Это простой пример для того, чтобы начать. Запустите его.
Результат, который мы ожидаем увидеть, выглядит следующим образом:
Oooppsss...
THE END.
output
Теперь посмотрите на код ниже:
try:
y = 1 / 0
except ArithmeticError:
print("Oooppsss...")
print("THE END.")
Что изменилось в нем - мы заменили ZeroDivisionError
на ArithmeticError
.
Как мы уже знаем, ArithmeticError
- общий класс, который включает в себя (среди прочих) исключение ZeroDivisionError
.
Таким образом, вывод кода остается неизменным. Протестируйте его.
Это также означает, что замена имени исключения на Exception
или BaseException
не меняет поведения программы.
Подведем итоги:
- каждое возникшее исключение попадает в первую соответствующую ветвь;
- соответствующая ветвь не обязательно должна точно указывать одно и то же исключение - достаточно, чтобы исключение было более общим (более абстрактным), чем созданное.