Module (83%)
Section (25%)

Исключения: продолжение

Посмотрите на код в редакторе. Это простой пример для того, чтобы начать. Запустите его.

Результат, который мы ожидаем увидеть, выглядит следующим образом:

Oooppsss... THE END.

output

Теперь посмотрите на код ниже:

try: y = 1 / 0 except ArithmeticError: print("Oooppsss...") print("THE END.")

Что изменилось в нем - мы заменили ZeroDivisionError на ArithmeticError.

Как мы уже знаем, ArithmeticError - общий класс, который включает в себя (среди прочих) исключение ZeroDivisionError.

Таким образом, вывод кода остается неизменным. Протестируйте его.

Это также означает, что замена имени исключения на Exception или BaseException не меняет поведения программы.


Подведем итоги:

  • каждое возникшее исключение попадает в первую соответствующую ветвь;
  • соответствующая ветвь не обязательно должна точно указывать одно и то же исключение - достаточно, чтобы исключение было более общим (более абстрактным), чем созданное.


Code

try:
y = 1 / 0
except ZeroDivisionError:
print("Oooppsss...")

print("THE END.")
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×