Я пытался установить переменную окружения, и она не удалась из-за отказа в доступе, однако блок try-Кроме не воспринял это как ошибку. Я мог бы поймать код выхода сам, а затем проверить, отличается ли код выхода от 0, но я надеялся, что возможен более питонический способ.
Вот что я пытался сделать так:
try:
exit_code = subprocess.call(["SETX", "-m", "ENV_VAR", "Test"])
print 'exit_code: {}'.format(exit_code) # for debugging purposes
except Exception:
raise Exception("Could not set environment variable")
И это был результат:
ERROR: Access to the registry path is denied.
exit_code: 1
Process finished with exit code 0
Как вы можете видеть, код выхода, который возвращается из subprocess.call, равен 1, что указывает на ошибку, однако весь процесс Python завершается с кодом выхода 0, и "повышение исключения" никогда не вызывается.
Как лучше всего решить эту проблему?