Поймать витую «необработанную ошибку в отложенном режиме», но она есть в чужом коде - PullRequest
0 голосов
/ 04 февраля 2020

Я использую модуль от кого-то другого для обработки прослушивания веб-сокета.

В ходе моего тестирования я обнаружил, что имитируется отключение inte rnet (отключив / включив мой адаптер inte rnet ) заставляет twisted.deferred выдавать ошибку, которая не попадает в ловушку моей обработки исключений. Похоже, что он просто печатает сообщение об ошибке, а не передает его?

Проблема в том, что тогда я не могу заставить его изящно обрабатывать его (например, продолжать проверять соединение inte rnet и возобновлять процессы, когда оно находится в резерве).

Есть ли в любом случае, что я могу «выслушать» такие ошибки и поймать их в ловушку самостоятельно, или мне нужно залезть на дерево и перекодировать работу других людей?

I также используйте сигнальный модуль для перехвата «Полученного сигнала прерывания клавиатуры» для ручной остановки выполнения (для краткости не показан).

conn.start()

while True:
    try:
        time.sleep(1)
    except Exception as err:
        # Stop streams and logging gracefully
        Print('Some other Exception received: ' + err)
        conn.close()
        user_log.close()
        sys.exit(0)
...