Udostępnij za pośrednictwem


Ograniczenia dotyczące programu obsługi zakończenia

Nie można użyć instrukcji goto, aby przejść do bloku instrukcji __try lub __finally.Zamiast tego należy wprowadzić blok instrukcji za pośrednictwem normalnego przepływu sterowania. (Można jednak wyskoczy poza blok instrukcji __try.) Ponadto nie można zagnieżdżać obsługi wyjątków lub zakończenia obsługi wewnątrz bloku __finally.

Ponadto niektóre rodzaje kodu dozwolonego w obsłudze zakończenia tworzą wątpliwe wyniki, więc jeśli są niezbędne należy używać ich ostrożnie.Jedna jest instrukcja goto, która przechodzi z bloku instrukcji __finally.Jeśli blok jest wykonywany w ramach prawidłowego zakończenia, nic niezwykłego się nie dzieje.Ale jeśli system odwraca stos, który rozwija zatrzymania, a bieżąca funkcja przejmuje kontrolę, jak gdyby nie było żadnych nienormalnych zakończeń.

A instrukcja return wewnątrz bloku instrukcji __finally przedstawia mniej więcej tą samą sytuację.Kontrola wraca do natychmiastowego obiektu wywołującego z funkcji zawierającej obsługę zakończenia.Jeśli system rozwijał stos, proces ten jest zatrzymywany, a program przebiega tak, jakby nie było żadnych wywoływanych wyjątków.

Zobacz też

Informacje

Pisanie programu obsługi zakończenia

Obsługa wyjątków strukturalnych (C/C++)