/ / Jaka jest szansa na niepowodzenie bloku kodu wyjątku - python, obsługa wyjątków

Jaka jest szansa na niepowodzenie bloku kodu wyjątku - python, obsługa wyjątków

Pytanie:

Czy są jakieś szanse, że finally blok kodu Pythona może nie zostać wykonany, gdy system operacyjny jest nadal uruchomiony?

Cel, powód:

Muszę kontrolować maszynę z Linux-em. Sygnał squarewave dla silnika krokowego jest generowany przez program zewnętrzny w tym samym środowisku i jeśli nie mógłbym z jakiegoś powodu zatrzymać sygnału squarewave, maszyna zostałaby fizycznie uszkodzona. Tak więc, bardzo ważne jest wywołanie programu zewnętrznego " W każdym razie s stop metody, bez względu na to, jak moja aplikacja jest rozbita.

Odpowiedzi:

3 dla odpowiedzi № 1

Według urzędnika dokumentacja:

Klauzula finally jest zawsze wykonywana wcześniejpozostawiając wyrażenie try, czy wystąpił wyjątek, czy nie. Gdy wystąpi wyjątek wystąpił w klauzuli try i nie został obsłużony przez wyjątek (lub zdarzyło się w klauzuli except lub else), to jest ponownie podbite po wykonaniu klauzuli finally. W końcu klauzula jest również wykonywana "w drodze", gdy jakakolwiek inna klauzula Instrukcja try jest pozostawiona przez instrukcję break, continue lub return.

W każdym razie, w pewnych okolicznościach (np., program ulega awarii), nadal może się zdarzyć, że program nie wejdzie do instrukcji finally, ale w tym momencie, aby zapobiec uruchomieniu zasobów (np. sesji bazy danych) po awarii programu, trzeba użyć innego mechanizmu (monitorowanie i wkrótce).