Плавное выполнение модуля

#python #exception

Вопрос:

У меня есть свой собственный модуль M и приложение Django X, которое будет вызывать M. Модуль M выглядит так:

 def main(argv):
  # do some pre-processing and then call
  
  try:
   do_whatever(input_arguments)
  except Exception as e:
   # caught exception code
  
  # do some post-processing and exit

if __name__ == "__main__":
    main(sys.argv)

 

Без main функции я улавливаю любые исключения, которые могут возникнуть при выполнении функции do_whatever()

Однако, что лучше для перехвата и обработки исключений из самого выполнения main ?

Вариант А

 def main(argv):
 try:
  # all main code
 except Exception as e:
  # caught exception code
 

Вариант В

 try:
 main(sys.argv)
except Exception as e:
 # caught exception code
 

Вариант С
Из приложения X

 try:
 M.main(arguments)
except Exception as e:
 # caught exception code
 

Не стесняйтесь также обсуждать рекомендации по проектированию модулей, особенно когда они используются в среде Django и веб-разработки.

Спасибо