Исключения: продолжение
Если Вы хотите обрабатывать два или более исключений, Вы можете использовать следующий синтаксис:
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.