Module (86%)
Section (50%)

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

Если Вы хотите обрабатывать два или более исключений, Вы можете использовать следующий синтаксис:

try: : except (exc1, exc2): :

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


Если исключение возникает внутри функции, его можно обработать:

  • внутри функции;
  • вне функции.
 

Давайте начнем с первого варианта - посмотрите на код в редакторе.

 

Исключение ZeroDivisionError (являющееся частным случаем класса исключений ArithmeticError) возникает внутри функции badfun(), и оно не покидает функцию - сама функция заботится об этом.

Вывод программы:

Arithmetic problem! THE END.

output


Также возможно обрабатывать исключение вне функции. Давайте попробуем.

Посмотрите на код ниже:

def bad_fun(n): return 1 / n try: bad_fun(0) except ArithmeticError: print("What happened? An exception was raised!") print("THE END.")

Проблема должна быть решена тем, что вызывает исключение.

Программа выводит:

What happened? An exception was raised! THE END.

output


Примечание. Возникшее исключение может выходить за границы функций и модулей и перемещаться по цепочке вызовов в поисках соответствующего выражения except, способного его обработать.

Если такого выражения нет, исключение остается необработанным и Python решает проблему стандартным способом, завершая код и отправляя диагностическое сообщение.

Теперь мы собираемся приостановить это обсуждение, поскольку хотим представить Вам совершенно новую инструкцию Python.



Code

def bad_fun(n):
try:
return 1 / n
except ArithmeticError:
print("Arithmetic Problem!")
return None

bad_fun(0)

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