Этот код не повлияет на любые классы исключений, которые были созданы до начала main
, и большинство возникающих исключений будут таких типов (KeyError
, AttributeError
и т. Д.). И вы не можете реально влиять на эти «встроенные исключения» в самом важном смысле - если где-то в вашем коде есть, например. 1/0, real ZeroDivisionError будет сгенерирован (собственными внутренностями Python), не , что бы вы ни связали с именем этого исключения.
Итак, я не думаю, что ваш код может делать то, что вы хотите (несмотря на все точки с запятой, он по-прежнему должен быть Python, верно?) - это можно сделать, исправив исходники C для среды выполнения Python, по сути (например, путем предоставления хука, потенциально перехваченного для любого исключения, даже если он будет перехвачен позднее) - такого хука в настоящее время не существует, поскольку варианты его использования были бы довольно редкими (например, StopIteration
всегда поднимается в нормальном конце каждого цикла for
- и тоже перехватывается, зачем на Земле хотеть отследить , что , и многие другие рутинные использования перехваченных исключений во внутренних компонентах Python и стандартная библиотека?!).