Я работаю над простым скриптом автоматизации на Python, который может генерировать исключения в разных местах.В каждом из них я хотел бы записать конкретное сообщение и выйти из программы.Чтобы сделать это, я вызываю SystemExit после перехвата исключения и его обработки (выполнения определенных операций ведения журнала и т. Д.).
В вызове main верхнего уровня я делаю следующее:
if __name__ == "__main__":
try:
main()
except SystemExit: # handled exception
sys.exit(1)
except: # any unhandled exception
logging.error('Unexpected error: ', exc_info=True)
sys.exit(2)
Тем не менее, использование голых, кроме как что-то осуждается.Использует ли «дерево исключений», где я использую голые, кроме как для указания «что-нибудь, кроме исключений, которые я обработал» нестандартным способом?Есть ли лучший способ добиться этого?Я все еще хотел бы регистрировать эти необработанные исключения, даже если они не были обработаны.
Редактировать: SystemExit поднимается, чтобы отметить, что исключение было обработано - независимо от того, что является исключением в моем случае, я всегда хочупрекратить запуск сценариев, так как любой сбой должен привести к абсолютному сбою.
Основная причина, по которой я спрашиваю это, заключается в том, что PEP8, похоже, рассматривает использование голого, кроме как ошибки, и хотя я мог бы использовать кромеBaseException, это должно быть просто синтаксическая разница.Является ли один способ более стандартным, чем другой, или есть другой стандартный путь достижения этого?