попробуйте, кроме блока, не выполняющегося (но, наконец, делает) - PullRequest
0 голосов
/ 08 марта 2019

Мой скрипт на Python (однопоточный) выполняется в течение многих часов, однако через некоторое время он внезапно останавливается. Мы использовали блок try-except для отладки ошибки. Однако это ведет себя очень странно. Мы используем:

try:
    while True:
        # do routine
        time.sleep(someSeconds)
except Exception as e:
    # exception!
finally:
    # finish

Процедура while выполняется нормально, затем сценарий (он же главный поток) засыпает, просыпается и снова выполняет процедуру. Через несколько часов выполняется блок finally, без исполняемый блок исключения (первый).

Как это может быть? Насколько я знаю , когда цикл while True останавливается по любой причине, должен быть выполнен блок исключения (до, наконец,)? Как может быть так, что ошибка не перехватывается?

Примечание: в цикле while нет возврата / прерывания

1 Ответ

0 голосов
/ 08 марта 2019

Я могу придумать два варианта:

  • ваша «процедура» выходит из цикла, используя return или break.

  • Возникает исключение, которое не происходит от Exception (добавьте except: print(“other exception”), чтобы проверить это)

...