Python Glossary English

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Сообщить о неточности