Что произойдёт, если исключение не будет перехвачено в блоке `except`?

Если исключение не будет перехвачено ни в одном блоке except, оно "всплывет" вверх по стеку вызовов.
Если исключение достигнет глобальной области видимости (вне всех функций и блоков try...except), программа аварийно завершится, выдав сообщение об ошибке (traceback) в консоль.

Если исключение, возникшее в блоке try, не будет перехвачено ни одним из блоков except, то произойдет следующее:

  • Программа аварийно завершится. Python прекратит выполнение программы, не обработав исключение.
  • Будет выведено traceback. Python выведет подробную информацию об исключении, включая тип исключения, сообщение об ошибке и место, где оно произошло (стек вызовов функций). Traceback помогает разработчику понять, что пошло не так и где искать ошибку.
  • Вышестоящие уровни стека вызовов будут проверены на обработку исключения. Если данное исключение произошло внутри функции, вызванной другой функцией, то Python попытается найти подходящий блок except в вызывающей функции. Это называется "всплытием" исключения. Если исключение достигнет самого верхнего уровня стека (глобального уровня) и там не будет обработано, программа аварийно завершится с выводом traceback.

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

Пример:

    
      def divide(x, y):
        try:
          result = x / y
          return result
        except TypeError:
          print("Ошибка: Неверный тип данных.  Ожидаются числа.")
        # Заметим, что ZeroDivisionError не перехватывается

      print(divide(10, 0)) # Вызовет ZeroDivisionError, которая не перехвачена. Программа завершится с traceback.
    
  
0