Udostępnij za pośrednictwem


Strukturalnej obsługi (C++) wyjątków

System Windows 95, Windows 98 i Windows 2000 (dawniej systemu Windows NT) obsługuje zdecydowanego podejścia do obsługi wyjątków, nazywane structured exception handling, która wymaga współpracy systemu operacyjnego, ale jest również bezpośrednie wsparcie w języku programowania.

Gramatyka

Spróbuj z wyjątkiem instrukcji :

__try związek oświadczenie

__except( wyrażenie ) mieszanek oświadczenie

Uwagi

Wyjątkiem jest zdarzenie, które jest nieoczekiwane lub zakłócałyby możliwość normalnie kontynuować proces.Wyjątki mogą być wykryte przez sprzętowe i programowe.Wyjątki sprzętowe zawierają dzielenie przez zero i przepełnienia typu liczbowego.Wyjątki programowe obejmują wykryć i sygnałów do systemu, wywołując RaiseException funkcji i specjalne sytuacje wykrytych przez system Windows.

Można napisać kod bardziej wiarygodne ze strukturalną obsługą wyjątków.Aby zapewnić, że zasoby, takie jak bloki pamięci oraz pliki są właściwie zamknięty z nieoczekiwanym.Można również obsługiwać szczególnych problemów, takich jak: za mało pamięci, zwięzły kod strukturalne, które nie korzystają z goto oświadczenia lub opracowanie badania kody zwrotne.

Try-z wyjątkiem i try-finally instrukcje są rozszerzenia Microsoft do języka C, który umożliwia aplikacjom przejęcie kontroli nad programem po zdarzeniach, które normalnie byłyby zakończyć wykonywanie.

[!UWAGA]

Structured exception handling współpracuje z plików źródłowych c i C++.Jednak to nie zaprojektowano dla języka C++.Chociaż destruktory dla lokalnych obiektów zostanie wywołana, jeśli używasz strukturalnej obsługi wyjątków w programie C++ (Jeśli korzystasz z /EHsc), można zapewnić, że kod jest bardziej poręczny, korzystając z obsługi wyjątków C++.Sposób obsługi wyjątków C++ mechanizm jest bardziej elastyczne, że można go obsługi wyjątków dowolnego typu.

Istnieją dwa mechanizmy obsługi structured exception:

Te dwa typy obsługi są odrębne jeszcze są ściśle powiązane w procesie nazywanym "niekontrolowanej stosu". Gdy wystąpi wyjątek, system Windows szuka niedawno zainstalowany procedury obsługi wyjątków, które jest aktualnie aktywne.Program obsługi można wykonać jedną z trzech elementów:

  • Należy przekazać sterowanie do innych programów obsługi (nie rozpoznają wyjątek).

  • Rozpoznaje jednak odrzucić wyjątek.

  • Rozpoznaje i obsłużyć wyjątek.

Procedury obsługi wyjątków, które rozpoznaje wyjątek nie może się w funkcji, która była uruchomiona, kiedy wystąpił wyjątek.W niektórych przypadkach może być dla funkcji, które są znacznie wyższe na stosie.Funkcja aktualnie uruchomione, jak również wszystkie funkcje w ramce stosu zostają zakończone.W trakcie tego procesu jest "zwiniętej" stosu: zmienne lokalne z zakończone funkcje, chyba że są one statyczne, są usuwane ze stosu.

Jak go odkręcania stosu, system operacyjny wymaga krańcowych, które zostały napisane dla każdej funkcji.Stosowanie procedury obsługi sytuacji krańcowych daje szansę, aby oczyścić zasoby, które inaczej mogłyby pozostać otwarte z powodu nieprawidłowego przerwania pracy.Wtedy sekcji krytycznej może wyjść w obsłudze rozwiązania.Jeśli program jest zamknięty, można wykonywać inne zadania porządkowe, takie jak zamknięcie i usuwanie plików tymczasowych.

Jeśli masz c modułów, które używają structured exception handling, mogą być wymieszane z modułami C++, które używają obsługi wyjątków C++.Zobacz Różnice obsługi wyjątków.

Aby uzyskać więcej informacji zobacz:

Zobacz też

Informacje

Obsługa wyjątków w programie Visual C++

Słów kluczowych języka C++