Module (88%)
Section (75%)

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

Инструкция raise может также использоваться следующим образом (обратите внимание на отсутствие названия исключения):

raise

Есть одно серьезное ограничение: этот вид инструкции raise может использоваться только внутри ветви except; использование его в любом другом контексте приводит к ошибке.

 

Инструкция немедленно вызовет то же исключение, что и обрабатываемое в настоящий момент.


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

Посмотрите на код в редакторе. Запустите его - мы увидим это в действии.

ZeroDivisionError вызвано дважды:

  • первый раз - внутри блока try (это вызвано фактическим делением на ноль);
  • второй - внутри блока except с помощью инструкции raise.
 

По сути, код выводит:

I did it again! I see! THE END.

output



Code

def bad_fun(n):
try:
return n / 0
except:
print("I did it again!")
raise


try:
bad_fun(0)
except ArithmeticError:
print("I see!")

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