Есть ли способ отловить RuntimeErrors при использовании os.system?

Я пишу инструмент, который отправляет команды в CMD для Google Lighthouse и хочет отловить ошибку, если URL-адрес недействителен. Какое исключение я бы использовал?

В настоящее время я пытаюсь поймать RuntimeError в Исключении при вводе неверного URL.

try:
    os.system("lighthouse --quiet {} {} {} {} {} --output-path={}/{}.html ".format(DevEmuStr,throttlingVar,CacheStr,presetVar,url,reportlocation,filename))
except RuntimeError:
    print("Please provide a proper URL")

Вместо "Пожалуйста, укажите правильный URL" я все равно получаю:

Runtime error encountered: The URL you have provided appears to be invalid.
LHError: INVALID_URL
at lighthouse (C:\Users\sugar\AppData\Roaming\npm\node_modules\lighthouse\lighthouse-core\index.js:44:11)
at chromeP.then._ (C:\Users\sugar\AppData\Roaming\npm\node_modules\lighthouse\lighthouse-cli\run.js:182:12)
at process._tickCallback (internal/process/next_tick.js:68:7)

И Маяк просто продолжается со следующего URL

Есть другая ошибка, которую я мог поймать?

2 ответа

Решение

Спасибо всем, кто пытался мне помочь, я наконец нашел способ получить это.

Добавив это:

lh_url_ok = os.system("lighthouse --quiet {} {} {} {} {} --output-path={}/{}.html ".format(DevEmuStr,throttlingVar,CacheStr,presetVar,url,reportlocation,filename))
if lh_url_ok >0:
    print("Error")

я был в состоянии проверить, был ли код выхода выше 0 (0= нет ошибки)

Нет, нет исключений, которые вы можете поймать из Python.

Мне кажется, что "Обнаружена ошибка во время выполнения" выводится Lighthouse, это не фактическое исключение Python, которое вы можете поймать.

Python ничего не знает о том, что происходит внутри исполняемого файла, который вы запускаете с os.system, вы можете просто получить выходные данные и код выхода.

Другие вопросы по тегам