Udostępnij za pośrednictwem


try-finally instrukcji (C)

Programu Microsoft

try-finally Instrukcja jest rozszerzenie Microsoft do języka C, który umożliwia aplikacjom zagwarantować wykonanie kodu, gdy wykonanie bloku kodu zostanie przerwane.Oczyszczanie składa się z takich zadań jak cofanie przydziału pamięci, zamykanie plików i zwalniania uchwytów plików.try-finally Instrukcji jest szczególnie użyteczna dla procedur, które mają kilka miejsc, w którym dokonywana jest kontrola na błąd, który może spowodować, że przedwczesne powrócić z rutynowych.

  • try-finally instrukcja:
    __try mieszanek oświadczenie

    __finally mieszanek oświadczenie

Instrukcja złożona po __try klauzuli jest strzeżony sekcji.Instrukcja złożona po __finally klauzuli jest procedura obsługi sytuacji krańcowych.Program obsługi określa zestaw akcji, które wykonuje, jeśli strzeżony sekcji jest zakończony, czy sekcja strzeżony jest zakończony przez wyjątek (Nienormalne zakończenie) lub przez standardowe fall za pośrednictwem (normalna zakończenie).

Sterowanie osiągnie __try oświadczenie sekwencyjne wykonanie prostych (poniżej).Gdy formant przechodzi __try instrukcji, uaktywnia jego skojarzony program obsługi.Wykonanie postępuje w następujący sposób:

  1. Sekcja strzeżony jest wykonywana.

  2. Procedury obsługi sytuacji krańcowych jest wywoływany.

  3. Po zakończeniu procedury obsługi sytuacji krańcowych, wykonywanie jest kontynuowane po __finally instrukcji.Niezależnie od sposobu strzeżony kończy się sekcji (na przykład, za pośrednictwem goto instrukcji strzeżonym lub za pośrednictwem return instrukcji), procedury obsługi sytuacji krańcowych jest wykonywane przed przepływ sterowania przenosi się z sekcji strzeżony.

__leave Słowo kluczowe jest nieprawidłowe w try-finally instrukcji bloku.Efekt __leave jest, aby przejść do końca try-finally bloku.Procedury obsługi sytuacji krańcowych natychmiast jest wykonywany.Chociaż goto instrukcji można osiągnąć ten sam wynik, goto instrukcja powoduje, że niekontrolowanej stosu.__leave Instrukcja jest bardziej efektywne, ponieważ nie obejmują niekontrolowanej stosu.

Zamykanie try-finally za pomocą instrukcji return instrukcji lub longjmp run-time, funkcja jest uważany za nieprawidłowego przerwania pracy.Nie jest dozwolone, aby przeskoczyć do __try instrukcji, ale prawne, aby przejść o jeden.Wszystkie __finally instrukcji, które są aktywne między punktem odjazdu i przeznaczenia muszą być uruchamiane.Jest to tak zwane "lokalne odkręcanie".

Procedury obsługi sytuacji krańcowych nie zostanie wywołana, jeśli proces jest zabite podczas wykonywania try-finally instrukcji.

[!UWAGA]

Structured exception handling współpracuje z plików źródłowych c i C++.Jednak to nie zaprojektowano dla języka C++.Aby zapewnić, że kod jest bardziej poręczny, korzystając z obsługi wyjątków C++.Wyjątek C++ mechanizmu obsługi jest również znacznie bardziej elastyczne, że można go obsługi wyjątków dowolnego typu.

[!UWAGA]

W przypadku programów C++ obsługę wyjątków C++ powinny zostać wykorzystane zamiast structured exception handling.Aby uzyskać więcej informacji, zobacz Obsługa wyjątków w Skorowidz języka C++.

Zobacz przykład dla try-z wyjątkiem instrukcji Aby zobaczyć jak try-finally works instrukcji.

KONIEC Microsoft szczególne

Zobacz też

Informacje

Instrukcja try-finally