Python 3.3+Исключенияисключение
subprocess.SubprocessError
модульные исключения
Базовый класс исключений модуля subprocess: от него наследуют CalledProcessError и TimeoutExpired.
Синтаксис
except subprocess.SubprocessError:
Ловит он не всё, что может случиться при запуске: если программа не найдена или нет прав, Popen поднимает FileNotFoundError или PermissionError — это OSError, а не SubprocessError. Надёжный перехват ошибок запуска — except (subprocess.SubprocessError, OSError). Наследуется прямо от Exception, поэтому TimeoutExpired не ловится и через встроенный TimeoutError.
Примеры
import subprocess
print(issubclass(subprocess.TimeoutExpired, subprocess.SubprocessError)) # → True
print(issubclass(FileNotFoundError, subprocess.SubprocessError)) # → False
import subprocess
try:
subprocess.run(['no-such-program-xyz'])
except (subprocess.SubprocessError, OSError) as e:
print(type(e).__name__) # → FileNotFoundError
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности