Можно ли используя конструкцию try-except заставить программу перезапускаться при любой возможной ошибке, а не вылетать? Возможности указать все коды ошибок нет.
«При любой возможной ошибке» может включать и segfault. То есть, скрипт может по сигналу умереть. faulthandler
может напечатать traceback при получении сигнала.
except:
(с пустым спецификатором исключения) любое исключение ловит. Есть также sys.excepthook
для непойманных исключений. Вы можете их использовать, чтобы записать в логи подробное сообщение об ошибке.
Так как скрипт может быть убит таким образом, что он никакие действия не успеет предпринять, то следует использовать внешнюю программу для перезапуска скрипта, к примеру, systemd/supervisord.
Если вы хотите, чтобы программа постоянно работала, то можно сделать её системным сервисом.
вы можете использовать supervisor
или runit
чтобы он сам перезапускал программу если она упадет.
Как минимум логирование ошибок будет полезно в любом случае